﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-思想比知识更重要 成长比成功更重要-随笔分类-AS</title><link>http://www.blogjava.net/renyangok/category/17012.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 29 Oct 2007 05:20:38 GMT</lastBuildDate><pubDate>Mon, 29 Oct 2007 05:20:38 GMT</pubDate><ttl>60</ttl><item><title>应用程序服务器与web服务器的关系</title><link>http://www.blogjava.net/renyangok/archive/2007/10/29/156651.html</link><dc:creator>保尔任</dc:creator><author>保尔任</author><pubDate>Mon, 29 Oct 2007 05:13:00 GMT</pubDate><guid>http://www.blogjava.net/renyangok/archive/2007/10/29/156651.html</guid><wfw:comment>http://www.blogjava.net/renyangok/comments/156651.html</wfw:comment><comments>http://www.blogjava.net/renyangok/archive/2007/10/29/156651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/renyangok/comments/commentRss/156651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/renyangok/services/trackbacks/156651.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 通俗的讲，Web服务器传送(serves)页面使浏览器可以浏览，然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点，你可以说：Web服务器专门处理HTTP请求(request)，但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; 下面让我们来细细道来：<br />
&nbsp;&nbsp; Web服务器(Web Server)<br />
&nbsp;&nbsp;&nbsp; Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request)，会返回一个HTTP响应(response)，例如送回一个HTML页面。为了处理一个请求(request)，Web服务器可以响应(response)一个静态页面或图片，进行页面跳转(redirect)，或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本，JSP(JavaServer Pages)脚本，servlets，ASP(Active Server Pages)脚本，服务器端(server-side)JavaScript，或者一些其它的服务器端(server-side)技术。无论它们(译者注：脚本)的目的如何，这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 要知道，Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时，它只单纯的把请求(request)传递给可以很好的处理请求 (request)的程序(译者注：服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境，而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing)，数据库连接(database connectivity)和消息(messaging)等功能。<br />
<br />
&nbsp;&nbsp;&nbsp; 虽然Web服务器不支持事务处理或数据库连接池，但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability)，例如负载平衡(load balancing)，缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。<br />
<br />
&nbsp;&nbsp; 应用程序服务器(the Application Server)<br />
&nbsp;&nbsp;&nbsp;&nbsp; 根据我们的定义，作为应用程序服务器，它通过各种协议，可以包括HTTP，把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览，而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。<br />
<br />
&nbsp;&nbsp;&nbsp; 应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反，这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML，所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在大多数情形下，应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的，例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外，应用程序服务器可以管理自己的资源，例如看大门的工作(gate-keeping duties)包括安全(security)，事务处理(transaction processing)，资源池(resource pooling)， 和消息(messaging)。就象Web服务器一样，应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。<br />
<br />
&nbsp;&nbsp; 一个例子<br />
&nbsp;&nbsp;&nbsp;&nbsp; 例如，设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询 (query)后，网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。<br />
<br />
&nbsp;&nbsp; 情景1：不带应用程序服务器的web服务器<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在此种情景下，一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request)，然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file，译者注：flat file是指没有特殊格式的非二进制的文件，如properties和XML文件等)中查找定价信息。一旦找到，服务器端(server-side)程序把结果信息表示成(formulate)HTML形式，最后Web服务器把会它发送到你的Web浏览器。<br />
<br />
&nbsp;&nbsp;&nbsp; 简而言之，Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。<br />
<br />
&nbsp;&nbsp; 情景2：带应用程序服务器的Web服务器<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注：服务器端(server- side)程序)。然而，你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化，此脚本只是简单的调用应用程序服务器的查找服务(lookup service)，而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。<br />
<br />
&nbsp;&nbsp;&nbsp; 在此情景中，应用程序服务器提供 (serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节，相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时，此服务只是简单的查找并返回结果给客户端。<br />
<br />
&nbsp;&nbsp;&nbsp; 通过从响应产生(response-generating) HTML的代码中分离出来，在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端，例如收款机，也可以调用同样的服务(service)来作为一个店员给客户结帐。相反，在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。<br />
<br />
&nbsp;&nbsp;&nbsp; 总而言之，在情景2的模型中，在Web服务器通过回应HTML页面来处理HTTP请求(request)，而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。<br />
<br />
&nbsp;&nbsp; 警告(caveats)<br />
&nbsp;&nbsp;&nbsp; 现在，XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器，Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 另外，现在大多数应用程序服务器也包含了Web服务器，这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能，但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注：这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反，如果需要，他们通常会把Web服务器独立配置，和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了)，分开配置(专门的Web服务器，集群(clustering)等等)，而且给最佳产品的选取留有余地。
<img src ="http://www.blogjava.net/renyangok/aggbug/156651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/renyangok/" target="_blank">保尔任</a> 2007-10-29 13:13 <a href="http://www.blogjava.net/renyangok/archive/2007/10/29/156651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下的修改Tomcat的可用内存</title><link>http://www.blogjava.net/renyangok/archive/2007/01/31/96928.html</link><dc:creator>保尔任</dc:creator><author>保尔任</author><pubDate>Wed, 31 Jan 2007 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/renyangok/archive/2007/01/31/96928.html</guid><wfw:comment>http://www.blogjava.net/renyangok/comments/96928.html</wfw:comment><comments>http://www.blogjava.net/renyangok/archive/2007/01/31/96928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/renyangok/comments/commentRss/96928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/renyangok/services/trackbacks/96928.html</trackback:ping><description><![CDATA[
		<span class="oblog_text">       tomcat默认可以使用的内存为128MB，在较大型的应用项目中，这点内存是不够的，轻微时，会使系统性能急剧下降，严重时,将导致系统无法运行，影响系统的稳定性。当内存不够用时，常见的问题就是报tomcat内存益处错误，从儿导致客户端包500错误的，如下：
<div><span style="FONT-FAMILY: 宋体">  </span></div><div>     <span style="FONT-SIZE: 8pt">当用户执行一个大数据的应用</span><span style="FONT-SIZE: 8pt"><span style="FONT-SIZE: 8pt; FONT-FAMILY: 宋体">时，系统会提示出错：</span><span lang="EN-US" style="FONT-SIZE: 8pt"><?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span></span></div><div><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span style="FONT-SIZE: 8pt"><span style="FONT-SIZE: 8pt; FONT-FAMILY: 宋体">前台错误为：</span><span lang="EN-US" style="FONT-SIZE: 8pt; COLOR: red">HTTP</span><span style="FONT-SIZE: 8pt; COLOR: red; FONT-FAMILY: 宋体">　</span><span lang="EN-US" style="FONT-SIZE: 8pt; COLOR: red">Status 500</span><span lang="EN-US" style="FONT-SIZE: 8pt">-<span style="FONT-SIZE: 8pt; COLOR: #0000ff">Dispatch[EAITool] to method listCurTree retrun an exception</span><o:p></o:p></span></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span style="FONT-SIZE: 8pt"><span lang="EN-US" style="FONT-SIZE: 8pt">(</span><span style="FONT-SIZE: 8pt; FONT-FAMILY: 宋体">以下省略</span><span lang="EN-US" style="FONT-SIZE: 8pt">)<o:p></o:p></span></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span lang="EN-US" style="FONT-SIZE: 8pt">………………………………………………………<o:p></o:p></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span lang="EN-US" style="FONT-SIZE: 8pt">………………………………………………………<o:p></o:p></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span style="FONT-FAMILY: 宋体">后台错误为：</span><span lang="EN-US">java.lang.<span style="COLOR: red">OutOfMemoryError</span>: unable to create new native thread<br />        at java.lang.Thread.start(Native Method)<br />        at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja<br />        va:847)<o:p></o:p></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">以下省略</span><span lang="EN-US">)<o:p></o:p></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span lang="EN-US">………………………………………………………<o:p></o:p></span></p><p class="MsoNormal" style="TEXT-INDENT: 24pt"><span lang="EN-US">………………………………………………………<o:p></o:p></span></p></div><div><span style="FONT-FAMILY: 宋体">　　这是由于</span><span lang="EN-US">TOMCAT</span><span style="FONT-FAMILY: 宋体">内存溢出而引发的问题，主要原因是</span><span lang="EN-US">JVM</span><span style="FONT-FAMILY: 宋体">的虚拟内存默认为</span><span lang="EN-US">128M</span><span style="FONT-FAMILY: 宋体">，当超过这个值时就把先前占用的内存释放，而导致好象</span><span lang="EN-US">TCP/IP</span><span style="FONT-FAMILY: 宋体">丢包的假象，出现</span><span lang="EN-US">HTTP500</span><span style="FONT-FAMILY: 宋体">的错误。　<br /></span></div><div><span style="FONT-FAMILY: 宋体">（注意，如果单独运行一个.class文件，想设置jvm内存的话，按如下方法：<br />-Xms&lt;size&gt;                 set   initial   Java   heap   size   <br />-Xmx&lt;size&gt;                 set   maximum   Java   heap   size   <br />-Xss&lt;size&gt;                 set   java   thread   stack   size   <br />    <br />比如:java   -Xmx512M  HelloWorld.class,让jvm使用512Mheap内存.<br />）　</span><span lang="EN-US"><br />      </span><span style="FONT-FAMILY: 宋体">解决方法主要是加大</span><span lang="EN-US">TOMCAT</span><span style="FONT-FAMILY: 宋体">可利用内存，并在程序当中加大内存使用。</span>因此根据应用的需求，有必要调整JVM使用内存的大小。现在将手工修改tomcat内存的方法及注意事项列出，希望能对新人有所帮助。</div><br /><div>      tomcat提供了两种安装模式，即免安装（*.zip）和安装（*.exe）方式。针对不同的安装方式下修改tomcat内存大小的方法几注意问题（windows环境）：</div><br /><div>       <span style="COLOR: #ff0000"><strong>方式1：</strong></span>当选择安装方式时，可以在安装tomcat的过程进行设置tomcat初始化内存的大小。但是假如说在安装时没有选择，或者应用改变了，需要增加tomcat内存时怎么半呢？此时，我们就要手工修改tomcat的一些文件了：</div><div>       看了很多网上的资料，都是说修改&lt;CATALINA_HOME&gt;\bin\catalina.bat文件的内容，即在里面增加一行代码：</div><div>        <span style="COLOR: #ff4500">set JAVA_OPTS=-Xms512m -Xmx512m //表示初始化最小可用内存和最大可用内存都是512MB（修改相应值即可）</span></div><div><span style="COLOR: #ff4500"></span> </div><div><span style="COLOR: #ff4500"></span> <span style="COLOR: #ff0000">如在catalina.bat的<br /></span>     rem ----- Execute The Requested Command ---------------------------------------<br />     echo Using CATALINA_BASE:   %CATALINA_BASE%<br />     echo Using CATALINA_HOME:   %CATALINA_HOME%<br />     echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%<br />     echo Using JAVA_HOME:       %JAVA_HOME%<br /><span style="COLOR: #ff0000">这一栏改为<br /></span>    rem ----- Execute The Requested Command ---------------------------------------<br />    <span style="COLOR: #ff0000">set JAVA_OPTS=-Xms512m -Xmx512m</span><br />    echo Using CATALINA_BASE:   %CATALINA_BASE%<br />    echo Using CATALINA_HOME:   %CATALINA_HOME%<br />    echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%<br />    echo Using JAVA_HOME:       %JAVA_HOME%<br /></div><div>就可以将JAVA虚拟机分配内存  508.0625MB的!</div><br /><div>但是很多人修改后，发现修改并没有起作用，即通过windows的服务启动tomcat时，实际的内存还是默认的，修改的设置并没有起作用；而通过<span style="COLOR: #ff4500">&lt;CATALINA_HOME&gt;\bin\startup.bat <span style="COLOR: #000000">启动却是生效的。这是为什么呢？因为在安装过程中，JVM的初始化参数已经写在注册表中了，由于没有修改注册表中相关参数，所以以windows服务方式启动时，修改的并没有生效。而通过<span style="COLOR: #ff4500">&lt;CATALINA_HOME&gt;\bin\startup.bat <span style="COLOR: #000000">启动直接是通过<span style="COLOR: #ff4500">&lt;CATALINA_HOME&gt;\bin\catalina.bat<span style="COLOR: #000000">文件中的配置的。你需要重新加载到系统服务中才生效，或者你手工在注册表中查找修改启动值，加载到服务中的时候参数已经配置好了，自己修改artup.bat不会改变注册表中的参数设置。</span></span></span></span></span></span></div><div><span style="COLOR: #ff4500"><span style="COLOR: #000000"><span style="COLOR: #ff4500"><span style="COLOR: #000000"><span style="COLOR: #ff4500"><span style="COLOR: #000000"></span></span></span></span></span></span> </div><div><span style="COLOR: #ff4500"><span style="COLOR: #000000"><span style="COLOR: #ff4500"><span style="COLOR: #000000"><span style="COLOR: #ff4500"><span style="COLOR: #000000">解决方法：修改注册表中的参数，加入JVM初始化内存的参数：</span></span></span></span></span></span></div><div><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000">HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions<br />值为<br />-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"<br />-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"<br />-Xrs<br />如加入 -Xms512m -Xmx800m</span></span></span></span></span></span></div><div><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"></span></span></span></span></span></span> </div><div><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><strong>方式2：</strong></span><span style="COLOR: #000000">针对免安装的用户，也可以通过将tomcat注册为windows的一个服务的方式来实现：‘</span></span></span></span></span></span></span></div><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #ff0000"><span style="COLOR: #000000"><p>我们可以对service.bat文件做一些其他修改，使tomcat更加能满足我们各种不同需求时的要求</p><p>1. 如果让tomcat编译jsp文件，就在PR_CLASSPATH中加入J2SDK的tools.jar<br />修改前：<br /><span style="BACKGROUND-COLOR: #c0c0c0">set PR_CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar</span><br />修改后：<br /><span style="BACKGROUND-COLOR: #c0c0c0">set PR_CLASSPATH=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar</span></p><p>2.要使用一个特定的JVM，就要修改jvm的参数；要使注册的windows服务的启动方式为自动，增加--Startup Automatic，这个是比较常用的；要用定制的server.xml配置文件并且传递多个参数给StartClass，要修改StartParams的值，各个值之间用分号分隔：<br />修改前：<br /><span style="BACKGROUND-COLOR: #c0c0c0">"%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm auto <br />--StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap <br />--StartParams start --StopParams stop<br /></span>修改后：<br /><span style="BACKGROUND-COLOR: #c0c0c0">"%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll" <br />--StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap <br />--StartParams "-config;%CUSTOM_SERVERXML_FILE%;-nonaming;start" --StopParams stop<br />--Startup Automatic</span></p><p>3. 指定最大和最小的内存限制，要增加jvm的初始参数<br />修改前：<br /><span style="BACKGROUND-COLOR: #c0c0c0">"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions <br />"-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed" <br />--StartMode jvm --StopMode jvm</span></p><p>修改后：<br /><span style="BACKGROUND-COLOR: #c0c0c0">"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions <br />"-Xms128M;-Xmx256M;-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed" <br />--StartMode jvm --StopMode jvm</span></p><div>4.有时注册windows服务成功后，但是启动服务时显示“发生服务特定错误: 0.”<br />就是因为jvm没有指定，修改Jvm auto为Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"后重新注册windows服务就可以启动了。</div><br /><div>service的命令方式：</div><div><div>加载服务为<br /><span style="BACKGROUND-COLOR: #c0c0c0">service install tomcat5<br /></span>卸载服务为<br /><span style="BACKGROUND-COLOR: #c0c0c0">service remove tomcat5 </span><span style="BACKGROUND-COLOR: #c0c0c0"><br /></span></div></div></span><br /><div>测试页面：在jsp代码中加入下面代码：</div><div>&lt;%<br />Runtime lRuntime = Runtime.getRuntime();<br />out.println("*** BEGIN MEMORY STATISTICS ***&lt;br/&gt;");<br />out.println("Free  Memory: "+lRuntime.freeMemory()+"&lt;br/&gt;");<br />out.println("Max   Memory: "+lRuntime.maxMemory()+"&lt;br/&gt;");<br />out.println("Total Memory: "+lRuntime.totalMemory()+"&lt;br/&gt;");<br />out.println("Available Processors : "+lRuntime.availableProcessors()+"&lt;br/&gt;");<br />out.println("*** END MEMORY STATISTICS ***");<br />%&gt;<br /><br />（转自：<a href="http://blog.chinae.com/u/tseyimwah/archives/2007/188.html">http://blog.chinae.com/u/tseyimwah/archives/2007/188.html</a>）</div></span></span></span></span></span></span></span>
<img src ="http://www.blogjava.net/renyangok/aggbug/96928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/renyangok/" target="_blank">保尔任</a> 2007-01-31 13:53 <a href="http://www.blogjava.net/renyangok/archive/2007/01/31/96928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat数据源配置</title><link>http://www.blogjava.net/renyangok/archive/2006/12/21/89314.html</link><dc:creator>保尔任</dc:creator><author>保尔任</author><pubDate>Thu, 21 Dec 2006 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/renyangok/archive/2006/12/21/89314.html</guid><wfw:comment>http://www.blogjava.net/renyangok/comments/89314.html</wfw:comment><comments>http://www.blogjava.net/renyangok/archive/2006/12/21/89314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/renyangok/comments/commentRss/89314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/renyangok/services/trackbacks/89314.html</trackback:ping><description><![CDATA[
		<p>
				<strong>数据源指数据库连接地址、参数等信息；而连接池是服务器与数据库保持一定数量的连接。<font color="#ff0000">但一般情况下，数据源都是指实现了连接池的数据源</font>，本文就是这么定义的。<br /></strong>配置数据源有两种方法：<br />一种是使用开源项目，比如dbcp来模拟数据源。<br />另一种是在服务器配好数据源，然后在项目中通过jndi调用，下面就是这种方法在tomcat中的例子：<br />（转自：<a href="/cader/archive/2006/07/06/57013.html">http://www.blogjava.net/cader/archive/2006/07/06/57013.html</a>）<br />有关tomcat数据源配置的文章已经不少，但是一般都是把数据源直接配置到server.xml文件中，这样在移植应用程序时带来了一些不必要的麻烦，其实tomcat数据源的配置还有一种方法如下：<br />1.假如有工程test，其需要用到的数据源为test/jdbc/Data，则在目录TOMCAT_HOME/conf\Catalina\localhost<br />下面建立文件test.xml,内容为：</p>
		<p>&lt;?xml version='1.0' encoding='utf-8'?&gt;<br />&lt;Context crossContext="true" displayName="Test" docBase="Test" path="/Test" workDir="work\Catalina\localhost\Test"&gt;<br />  &lt;Resource auth="Container" name="test/jdbc/Data" type="javax.sql.DataSource"/&gt;<br />  &lt;ResourceParams name="test/jdbc/Data"&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;factory&lt;/name&gt;<br />      &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;url&lt;/name&gt;<br />      &lt;value&gt;jdbc:jtds:sqlserver://127.0.0.1:1433/test;tds=8.0;lastupdatecount=true;&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;password&lt;/name&gt;<br />      &lt;value&gt;11111111&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxWait&lt;/name&gt;<br />      &lt;value&gt;10000&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxActive&lt;/name&gt;<br />      &lt;value&gt;100&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;driverClassName&lt;/name&gt;<br />      &lt;value&gt;net.sourceforge.jtds.jdbc.Driver&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;username&lt;/name&gt;<br />      &lt;value&gt;sa&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxIdle&lt;/name&gt;<br />      &lt;value&gt;30&lt;/value&gt;<br />    &lt;/parameter&gt;<br />  &lt;/ResourceParams&gt;<br />&lt;/Context&gt;</p>
		<p>2.其他配置<br />  （1）web.xml文件<br />     在工程当中的web.xml文件中添加<br />    &lt;resource-ref&gt;<br />       &lt;res-ref-name&gt;test/jdbc/Data&lt;/res-ref-name&gt;<br />       &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />       &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />    &lt;/resource-ref&gt;<br /> （2）工程中调用代码<br />    Context initContext = new InitialContext();<br />      Context envContext  = (Context)initContext.lookup("java:/comp/env");      <br />      DataSource ds = (DataSource)envContext.lookup("test/jdbc/Data"); <br /> // test/jdbc/Data是数据源的名字  <br />      Connection conn = ds.getConnection(); <br /> Statement stmt = conn.createStatement();</p>
<img src ="http://www.blogjava.net/renyangok/aggbug/89314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/renyangok/" target="_blank">保尔任</a> 2006-12-21 16:46 <a href="http://www.blogjava.net/renyangok/archive/2006/12/21/89314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat学习笔记</title><link>http://www.blogjava.net/renyangok/archive/2006/11/20/82280.html</link><dc:creator>保尔任</dc:creator><author>保尔任</author><pubDate>Mon, 20 Nov 2006 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/renyangok/archive/2006/11/20/82280.html</guid><wfw:comment>http://www.blogjava.net/renyangok/comments/82280.html</wfw:comment><comments>http://www.blogjava.net/renyangok/archive/2006/11/20/82280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/renyangok/comments/commentRss/82280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/renyangok/services/trackbacks/82280.html</trackback:ping><description><![CDATA[
		<p>1、 运行tomcat后打开网页，浏览器显示如下错误：<br /><br />Unable to find a javac compiler;</p>
		<p>com.sun.tools.javac.Main is not on the classpath.</p>
		<p>Perhaps JAVA_HOME does not point to the JDK<br /><br />首先，你必需检查一下自己的环境变量是不是正确;这个我想大家都会，只是有时候重装JDK而忘了改，不过检查一下看看就行了。</p>
		<p>其次：在JDK的lib目录下有一个tools.jar文件,你把它拷到Tomcat安装目录下的common\lib目录下，或者在tomcat下作如下修改，效果一样</p>
		<div class="entrytext">
				<p>
						<img alt="o_tomcat5.0.28" src="http://www.newdict.com/blog/wp-content/uploads/2006/02/o_tomcat5.0.28.GIF" align="top" />
				</p>
				<p>最后：如果不可以，在打开tomcat的configue tomcatg ,找到java,在java optioons里填上:-Djava.home=C:\Program Files\Java\jdk1.5.0_04;就好了。<br /></p>
		</div>
<img src ="http://www.blogjava.net/renyangok/aggbug/82280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/renyangok/" target="_blank">保尔任</a> 2006-11-20 15:29 <a href="http://www.blogjava.net/renyangok/archive/2006/11/20/82280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat and resin服务器如何设为UTF8编码</title><link>http://www.blogjava.net/renyangok/archive/2006/11/20/82279.html</link><dc:creator>保尔任</dc:creator><author>保尔任</author><pubDate>Mon, 20 Nov 2006 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/renyangok/archive/2006/11/20/82279.html</guid><wfw:comment>http://www.blogjava.net/renyangok/comments/82279.html</wfw:comment><comments>http://www.blogjava.net/renyangok/archive/2006/11/20/82279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/renyangok/comments/commentRss/82279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/renyangok/services/trackbacks/82279.html</trackback:ping><description><![CDATA[（转自http://leaf.jdk.cn/article.asp?id=39）<br />    虽然项目全部采用了UTF-8编码，所有的源文件*.java,*.jsc,*.html,*.ftl都采用了UTF-8编码。可是还是出现了乱码问题。很是不爽，后来找到了tomcat，和resin的配置。 
<ol><li>Tomcat的配置。(conf/server.xml)<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><span style="COLOR: rgb(0,0,0)">    </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> Define a non-SSL HTTP/1.1 Connector on port 8080 </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">Connector </span><span style="COLOR: rgb(255,0,0)">port</span><span style="COLOR: rgb(0,0,255)">="80"</span><span style="COLOR: rgb(255,0,0)"> maxHttpHeaderSize</span><span style="COLOR: rgb(0,0,255)">="8192"</span><span style="COLOR: rgb(255,0,0)"><br />               maxThreads</span><span style="COLOR: rgb(0,0,255)">="150"</span><span style="COLOR: rgb(255,0,0)"> minSpareThreads</span><span style="COLOR: rgb(0,0,255)">="25"</span><span style="COLOR: rgb(255,0,0)"> maxSpareThreads</span><span style="COLOR: rgb(0,0,255)">="75"</span><span style="COLOR: rgb(255,0,0)"><br />               enableLookups</span><span style="COLOR: rgb(0,0,255)">="false"</span><span style="COLOR: rgb(255,0,0)"> redirectPort</span><span style="COLOR: rgb(0,0,255)">="8443"</span><span style="COLOR: rgb(255,0,0)"> acceptCount</span><span style="COLOR: rgb(0,0,255)">="100"</span><span style="COLOR: rgb(255,0,0)"><br />               connectionTimeout</span><span style="COLOR: rgb(0,0,255)">="20000"</span><span style="COLOR: rgb(255,0,0)"> disableUploadTimeout</span><span style="COLOR: rgb(0,0,255)">="true"</span><span style="COLOR: rgb(255,0,0)"> URIEncoding</span><span style="COLOR: rgb(0,0,255)">="UTF-8"</span><span style="COLOR: rgb(0,0,255)">/&gt;</span></div></li><li>Resin的配置。(conf/resin.conf)<br /><p></p><table cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td><h4>character-encoding</h4></td><td align="right">Resin 1.1</td></tr></tbody></table><div class="desc"><b>child of:</b> resin, server, host-default, host, web-app-default, web-app<br /><b>default:</b> The default value is ISO-8859-1.<br /><p>Specifies the default character encoding for the environment.</p><p></p><table class="egpad" cellspacing="0" width="90%"><tbody><tr><td class="example" bgcolor="#ffeecc"><pre>&lt;web-app id='/'&gt;<br />                &lt;character-encoding&gt;shift_jis&lt;/character-encoding&gt;<br />                ...<br />                &lt;/web-app&gt;<br /></pre></td></tr></tbody></table></div></li></ol><p class="desc"></p><p>     这个是resin doc里面的我是在web-app-default里面加上了encoding的配置</p><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: rgb(0,0,0)">    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">web-app-default</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">character-encoding</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">UTF-8</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">character-encoding</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      <img alt="" src="http://www.blogjava.net/images/dot.gif" /><br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">web-app-default</span><span style="COLOR: rgb(0,0,255)">&gt;</span></div><p>希望对你的项目有帮助。</p><img src ="http://www.blogjava.net/renyangok/aggbug/82279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/renyangok/" target="_blank">保尔任</a> 2006-11-20 15:28 <a href="http://www.blogjava.net/renyangok/archive/2006/11/20/82279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>