﻿<?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-把永恒在一刹那间收藏-文章分类-server</title><link>http://www.blogjava.net/gm_jing/category/23520.html</link><description>生活之点点滴滴</description><language>zh-cn</language><lastBuildDate>Mon, 11 Jan 2010 23:05:09 GMT</lastBuildDate><pubDate>Mon, 11 Jan 2010 23:05:09 GMT</pubDate><ttl>60</ttl><item><title>Tomcat6.0 连接池的配置</title><link>http://www.blogjava.net/gm_jing/articles/308828.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Sat, 09 Jan 2010 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/308828.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/308828.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/308828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/308828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/308828.html</trackback:ping><description><![CDATA[<p>&nbsp; Tomcat6.0 连接池的配置</p>
<p>1.本人当前使用的Tomcat版本为：6.0.20，oracle为稳定的9i版本</p>
<p>2.下文为方便起见，依习惯以%Tomcat_Home%表示Tomcat安装的目录，本人安装目录为&#8220;E:\Program Files\WindowsXP\tomcat6&#8221;</p>
<p>配置步骤如下：</p>
<p>1.Tomcat 6的配置和以前的不同了，不推荐在server.xml中进行配置，而是在%Tomcat_Home%\webapps\yourApp\META-INF \context.xml中进行配置才是更好的方法。而不是以前版本%Tomcat_Home%\conf下的context.xml文件。这样就可以在不同的web应用下单独配置连接池了，且Tomcat会自动重载。当然你也可以更改%Tomcat_Home%\conf下的context.xml文件，将所有web应用下的连接池进行统一配置。</p>
<p>2.将代码修改如下：</p>
<p>view plaincopy to clipboardprint?<br />
&lt;Context reloadable="true"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;WatchedResource&gt;WEB-INF/web.xml&lt;/WatchedResource&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource"&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; maxActive="100"&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; maxIdle="30"&nbsp; <br />
&nbsp;&nbsp;&nbsp; maxWait="10000"&nbsp; <br />
&nbsp;&nbsp;&nbsp; username="scott"&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; password="tiger"&nbsp; <br />
&nbsp;&nbsp;&nbsp; driverClassName="oracle.jdbc.driver.OracleDriver"&nbsp; <br />
&nbsp;&nbsp;&nbsp; url="jdbc:oracle:thin:@localhost:1521:ora9"/&gt;&nbsp; <br />
&lt;/Context&gt;&nbsp; <br />
&lt;Context reloadable="true"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;WatchedResource&gt;WEB-INF/web.xml&lt;/WatchedResource&gt;<br />
&nbsp;&lt;Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" <br />
&nbsp;maxActive="100" <br />
&nbsp;maxIdle="30"<br />
&nbsp;maxWait="10000"<br />
&nbsp;username="scott" <br />
&nbsp;password="tiger"<br />
&nbsp;driverClassName="oracle.jdbc.driver.OracleDriver"<br />
&nbsp;url="jdbc:oracle:thin:@localhost:1521:ora9"/&gt;<br />
&lt;/Context&gt;</p>
<p>name 为当前数据源JNDI的名字，可以随意设定；</p>
<p>auth 为验证方式；</p>
<p>type 资源类型；</p>
<p>driverClassName 为Oracle驱动引用；</p>
<p>maxActiv 为连接池最大激活的连接数，设为0表示无限制；</p>
<p>maxIdle 为连接池最大空闲的连接数，数据库连接的最大空闲时间。超过空闲时间，</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库连接将被标记为不可用，然后被释放。设为0表示无限制；</p>
<p>maxWait 为连接最大的等待时间，单位毫秒，如果超过此时间将接到异常。设为-1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示无限制。；</p>
<p>username 为oracle数据库的一个用户名； </p>
<p>password 为username的密码；</p>
<p>url 为连接oracle的连接地址；</p>
<p>注：本人尝试将代码&#8220;driverClassName="oracle.jdbc.driver.OracleDriver"&#8221;改为&#8220;driverClassName="oracle.jdbc.OracleDriver"&#8221;程序依然运行正常，刚开始以为老师的代码有问题</p>
<p>3.在程序中的调用形式为：</p>
<p>view plaincopy to clipboardprint?<br />
Context context = new InitialContext();&nbsp;&nbsp; <br />
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");&nbsp;&nbsp; <br />
Connection conn = ds.getConnection();&nbsp; <br />
Context context = new InitialContext();<br />
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");<br />
Connection conn = ds.getConnection(); </p>
<p>注：&#8220;java:/comp/env/jdbc/oracleds&#8221;红色标记文字为步骤1里设置的Resource name</p>
<p>则可以将建立connection的方式以上述形式取代传统方式：</p>
<p>view plaincopy to clipboardprint?<br />
String driver = "oracle.jdbc.driver.OracleDriver";&nbsp;&nbsp; <br />
String url = "jdbc:oracle:thin:@localhost:1521:ora9";&nbsp;&nbsp; <br />
String username = "scott";&nbsp;&nbsp; <br />
String password = "tiger";&nbsp;&nbsp; <br />
Class.forName(driver);&nbsp;&nbsp; <br />
Connection conn = DriverManager.getConnection(url, username, password);&nbsp; <br />
String driver = "oracle.jdbc.driver.OracleDriver";<br />
String url = "jdbc:oracle:thin:@localhost:1521:ora9";<br />
String username = "scott";<br />
String password = "tiger";<br />
Class.forName(driver);<br />
Connection conn = DriverManager.getConnection(url, username, password); </p>
<p>4.另外还需将用到的jdbc驱动类库导入到%Tomcat_Home%\lib目录下</p>
<p>否则会抛出如下异常：<br />
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'</p>
<p>依上述步骤就能成功的配置Tomcat6.0 连接池，还有网友贴文说需</p>
<p>在web.xml文件中的web-app节点下加入如下代码形式：<br />
&lt;resource-ref&gt;<br />
&lt;res-ref-name&gt;jdbc/myoracle&lt;/res-ref-name&gt;<br />
&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&lt;/resource-ref&gt;</p>
<p>因本人未添加此项，程序依然正确，故本人认为此步骤为非必要项<br />
<br />
</p>
<p>&nbsp;---------------------------------------------------------------------------<br />
</p>
<p>今天需要在另一台机器上重新部署系统，重新设置db的连接池。当我把tomcat拷贝到那台机器，并且修改META-INF\context.xml，然后重新启动tomcat，但发现系统连接的仍然是老的db。再次检查了META-INF\context.xml文件，确信了这个文件已经正确设置db连接了，这也说明这个文件并没有真正起作用。查看了tomcat下conf\context.xml也没有设置db的连接池。那是哪个文件在起作用呢？折腾了办法，后来发现tomcat在conf\Catalina\localhost下生成了一个和原来META-INF\context.xml相同内容的文件，怀疑一定是这个文件在起作用？删除conf\Catalina\localhost目录，重启tomcat，问题消失。</p>
<p>转载一篇<a href="http://cailin.javaeye.com/blog/151507">tomcat加载类的顺序</a>：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>bin：存放启动和关闭tomcat的脚本文件；&nbsp;</p>
<p>/conf：存放tomcat的各种配置文件，比如：server.xml&nbsp;</p>
<p>/server/lib：存放tomcat服务器所需要的各种jar文件（jar文件只可被tomcat 服务器访问）&nbsp;</p>
<p>/server/webapps：存放tomcat自带的两个web应用：admin应用和manager应用。&nbsp;</p>
<p>/common/lib：存放tomcat服务器以及所有web应用都可以访问的jar文件夹（web和tomcat服务器都可访问此jar）&nbsp;</p>
<p>/shared/lib：存放web都可访问的jar文件。（可以被所有的web访问，但不能被tomcat访问）&nbsp;</p>
<p>/logs：存放tomcat的日志文件&nbsp;</p>
<p>/webapps：当发布web应用时，默认情况下把web应用文件放于此目录下&nbsp;</p>
<p>/work：tomcat把由jsp生成的Servlet放于此目录&nbsp;</p>
<p>另：在web应用中，WEB-Inf目录下，也可以建立lib子目录，在此子目录下可以存放各种jar文件，这些jar文件只能被当前web应用访问。其中，在web-inf目录下的lib与classes目录，Tomcat类装载器先装载classes目录下的类，再装载lib目录下的类。因为类同名时，classes优先。&nbsp;</p>
<p>&nbsp;</p>
<p>其中jsp运行时，查找class的顺序为：项目文件夹（WEB-INF\lib）===》容器文件夹（tomcat\common\lib）==》jdk文件夹（jdk\jre\lib\ext）&nbsp;</p>
<p>&nbsp;</p>
<p>Tomcat的class加载的优先顺序一览&nbsp;</p>
<p>1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。&nbsp;</p>
<p>2.环境变量CLASSPATH中的jar和class文件。&nbsp;</p>
<p>3.$CATALINA_HOME/common/classes下的class文件。&nbsp;</p>
<p>4.$CATALINA_HOME/commons/endorsed下的jar文件。&nbsp;</p>
<p>5.$CATALINA_HOME/commons/i18n下的jar文件。&nbsp;</p>
<p>6.$CATALINA_HOME/common/lib 下的jar文件。&nbsp;</p>
<p>（JDBC驱动之类的jar文件可以放在这里，这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。）&nbsp;</p>
<p>7.$CATALINA_HOME/server/classes下的class文件。&nbsp;</p>
<p>8.$CATALINA_HOME/server/lib/下的jar文件。&nbsp;</p>
<p>9.$CATALINA_BASE/shared/classes 下的class文件。&nbsp;</p>
<p>10.$CATALINA_BASE/shared/lib下的jar文件。&nbsp;</p>
<p>11.各自具体的webapp /WEB-INF/classes下的class文件。&nbsp;</p>
<p>12.各自具体的webapp /WEB-INF/lib下的jar文件。&nbsp;</p>
<p>&nbsp;</p>
<p>class的搜寻顺序如下&nbsp;</p>
<p>-------------&nbsp;</p>
<p>/WEB-INF/classes of your web application&nbsp;</p>
<p>/WEB-INF/lib/*.jar of your web application&nbsp;</p>
<p>$CATALINA_HOME/common/classes&nbsp;</p>
<p>$CATALINA_HOME/common/endorsed/*.jar&nbsp;</p>
<p>$CATALINA_HOME/common/i18n/*.jar&nbsp;</p>
<p>$CATALINA_HOME/common/lib/*.jar&nbsp;</p>
<p>$CATALINA_BASE/shared/classes&nbsp;</p>
<p>$CATALINA_BASE/shared/lib/*.jar&nbsp;</p>
<p>--------------&nbsp;</p>
<p>因此放在不同webapp里的class文件，会被classloader加载成不同的实例。&nbsp;</p>
<p>例如假设下面两个不同内容的class。分别放在不同的webapp的class目录下。&nbsp;</p>
<p>package com.lizongbo;&nbsp;</p>
<p>public class TestClass {&nbsp;</p>
<p>&nbsp;&nbsp;private String NAME="lizongbo";&nbsp;</p>
<p>}&nbsp;</p>
<p>&nbsp;</p>
<p>package com.lizongbo;&nbsp;</p>
<p>public class TestClass {&nbsp;</p>
<p>&nbsp;&nbsp;private String NAME="li_zongbo";&nbsp;</p>
<p>}&nbsp;</p>
<p>&nbsp;</p>
<p>在不同的webapp得到的com.lizongbo.NAME结果是不同的，且互不影响。&nbsp;</p>
<p>但是注意，以下包名开头的class例外：&nbsp;</p>
<p>javax.*&nbsp;</p>
<p>org.xml.sax.*&nbsp;</p>
<p>org.w3c.dom.*&nbsp;</p>
<p>org.apache.xerces.*&nbsp;</p>
<p>org.apache.xalan.*&nbsp;</p>
<p>&nbsp;</p>
<p>ps,注意.在各个jar中的\META-INF\MAINFEST.MF文件里Class-Path键值对，也会提供jar的加载优先顺序。&nbsp;</p>
<p>例如某jar的MAINFEST.MF内容如下：&nbsp;</p>
<p>Manifest-Version: 1.0&nbsp;</p>
<p>Created-By: lizongbo&nbsp;</p>
<p>Class-Path: commons-beanutils.jar&nbsp;</p>
<p>Class-Path: commons-collections.jar&nbsp;</p>
<p>Class-Path: commons-dbcp.jar&nbsp;</p>
<p>Class-Path: commons-digester.jar&nbsp;</p>
<p>Class-Path: commons-logging.jar&nbsp;</p>
<p>Class-Path: commons-pool.jar&nbsp;</p>
<p>Class-Path: commons-services.jar&nbsp;</p>
<p>Class-Path: commons-validator.jar&nbsp;</p>
<p>Class-Path: jakarta-oro.jar&nbsp;</p>
<p>Main-Class: com.lizongbo.MyTestClass&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>那么在加载这个jar的时候，会先在此jar所在目录下依次先加载commons-beanutils.jar，commons-collections.jar。。。等jar文件。&nbsp;</p>
<p>&nbsp;</p>
<p>在不同的地方放置jar和class可能会产生意想不到的后果,，尤其是不同版本的jar文件，因此在实际应用部署web应用时候要特别留心.&nbsp;</p>
<p>&nbsp;</p>
<p>例如 使用javamail常见的一个出错信息:&nbsp;</p>
<p>javax.mail.NoSuchProviderException: No provider for smtp&nbsp;</p>
<p>其真实原因就很可能如下:&nbsp;</p>
<p>在不同的加载jar的目录下放置了不同版本的mail.jar,比如一个是javamail1.3.1的mail.jar&nbsp;</p>
<p>在D:\jakarta-tomcat-5.5.8\common\lib下,而另外一个是javamail1.3.2的mail.jar在&nbsp;</p>
<p>D:\jakarta-tomcat-5.5.8\webapps\lizongbo\WEB-INF/lib下,&nbsp;</p>
<p>那么lizongbo这个webapp中使用到javamail进行邮件发送的时候，便会出现No provider for smtp的错误。</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/308828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-01-09 13:28 <a href="http://www.blogjava.net/gm_jing/articles/308828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Tomcat6的配置</title><link>http://www.blogjava.net/gm_jing/articles/252249.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Wed, 21 Jan 2009 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/252249.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/252249.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/252249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/252249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/252249.html</trackback:ping><description><![CDATA[Tomcat 是一款优秀的JSP/Servlet容器，最初由SUN开发，后来被贡献给了Apache社区。Tomcat现在的版本已到６。Tomcat6实现了 Servlet2.5和JSP2.1规范。针对web开发和web服务，提供了更多的新功能。本文使用的版本为Tomcat6.0.14，要求的JDK版本至少为1.5。Tomcat不同版本间的配置有差异，如果读者使用的是其他版本，请仔细阅读Tomat官方文档，或者到网上寻找相关的资料。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Tomcat有安装版和解压缩版两种版本，安装版除了提供一个图形界面的后台和Windows服务外，其他的和解压缩版没有区别。我使用压缩版。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 第一步，我们需要下载Tomcat，下载地址是http://tomcat.apache.org。下载完成后，解压缩，我的Tomcat位于C:\Tomcat6下，以下用$TOMCAT表示这个目录。 <br />
<br />
第二步，启动和停止 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; $TOMCAT\bin下面是Tomcat用到的脚本程序，扩展名为.bat是用于windows平台的批处理文件，扩展名为.sh的是用于linux或Unix平台的脚本。我们通常用到的是startup.bat、shutdown.bat脚本。我们也可以用catalina.bat start启动Tomcat，用catalina.bat stop关闭Tomcat，事实上，startup.bat正是catalina.bat start的别名，同理shutdownup.bat 是catalina.bat stop的别名。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Catalina.bat才是操作Tomcat的核心脚本，可以通过catalina &#8211;help查看catalina可以使用的参数及其说明。启动Tomcat后，我们输入如下网址：http://localhost:8080/，如果看到Tomcat的页面，证明安装成功，如果不成功，请检查是否设置了正确的JAVA_HOME，JDK的版本是否太低。如果还是不成功，可能是端口冲突，下面将会介绍如何修改端口号。 <br />
<br />
TOMCAT配置 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; $TOMCAT\conf下是Tomcat的配置文件，最重要的配置文件是Servler.xml。Server.xml可以重新指定，方式是catalina.bat &#8211;config，比如指定config.xml取代Servler.xml，命令如下: <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; catalina.bat run &#8211;config conf\config.xml <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Server.xml中可以配置部署应用需要的所有信息，从Tomcat5开始，应用配置可以从Server.xml独立出来，这也是 Tomcat现在所推荐的配置方式，带来的一个好处，显而易见，更容易维护了。另一个好处，是在Servler.xml的修改，只能通过重启Tomcat 才能发生作用，分拆后，修改完成，可以不用重启Tomcat就发生作用。本文就采用这种配置方式。下面进行详细的介绍。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; (1) 端口的修改 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Server元素下可以有多个Service，端口就是在Service元素下配置的。Connector元素的配置如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Connnector</span><span>&nbsp;</span><span class="attribute">port</span><span>=&#8221;8080&#8221;&nbsp;</span><span class="attribute">protocal</span><span>=&#8221;HTTP/1.1&#8221;&nbsp;</span><span class="attribute">connectionTimeout</span><span>=&#8221;20000&#8221;&nbsp;</span><span class="attribute">redirectPort</span><span>=&#8221;8443&#8221;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">     &lt;Connnector port=&#8221;8080&#8221; protocal=&#8221;HTTP/1.1&#8221; connectionTimeout=&#8221;20000&#8221; redirectPort=&#8221;8443&#8221;/&gt;</pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 其中protocal制定了该端口侦听的协议类型，HTTP/1.1表示侦听的是客户的HTTP请求，即我们通过浏览器访问需要输入的端口，当端口号是80的时候，可以不用在浏览器地址栏输入端口号，这就是我们访问很多网站不需要指定端口的原因。有时候protocal没有指定，这时候默认的是HTTP/1.1。注意这个端口必须是闲置的。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Service下面可以配置多个端口，用于侦听不同的协议。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; (2) 虚拟主机 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Service元素下必须有一个Engine元素，Engine有一个名称，和一个默认的虚拟主机名，形式如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Engine</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"Catalina"</span><span>&nbsp;</span><span class="attribute">defaultHost</span><span>=</span><span class="attribute-value">"localhost"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">     &lt;Engine name="Catalina" defaultHost="localhost"&gt;
</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 虚拟主机就配置在Engine元素下。形式如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Host</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"localhost"</span><span>&nbsp;&nbsp;</span><span class="attribute">appBase</span><span>=</span><span class="attribute-value">"webapps"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">unpackWARs</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="attribute">autoDeploy</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlValidation</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">xmlNamespaceAware</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">Host</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">&lt;Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&gt;
&lt;/Host&gt;</pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; name是虚拟主机的名字，appBase是虚拟主机指向的目录，Tomcat启动时，会自动加载appBase下的应用。 unpackWARs表示是否自动解压缩appBase下已打成WAR包的应用，autoDeploy表示在服务器运行的时候，将一个应用放入 appBase下，是否自动部署。 <br />
<br />
Tomcat应用部署 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 应用可以配置在Server.xml中，这里介绍分拆后的配法。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 应用的独立配置文件应该配置在路径$TOMCAT\conf\engineName\hostName\下，其中engineName是应用所在的Engine的名字，对于本例而言是Catalina，hostName是应用所在的虚拟主机的名字，本例为localhost。配置文件的名字是这样约定的：如果访问路径就在虚拟主机下，那么名字为ROOT，如：ROOT.xml，其他情况下，文件名就是访问路径，不过需要用#替换路径中的/。本例中访问路径为/struts，相应的文件名是struts.xml，内容如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Context</span><span>&nbsp;</span><span class="attribute">docBase</span><span>=</span><span class="attribute-value">"C:/WAP/struts"</span><span>&nbsp;</span><span class="attribute">reloadable</span><span>=</span><span class="attribute-value">"true"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">     &lt;Context docBase="C:/WAP/struts" reloadable="true"/&gt;
</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 其中docBase指定应用所在的目录，如果是相对目录，对应的就是虚拟主机下appBase的目录，也可以是绝对目录，这个时候应用在什么地方都可以。reloadable表示是否支持热部署，比如class更新，如果reloadable为true，应用会重新部署。注意：在分拆后， Context的path属性将不再起作用，这是Tomcat6和之前的版本不同的地方。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 以上配置完成，我们就可以访问应用了，访问地址是http://localhost:8080/struts <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 下面介绍资源的配置 <br />
<br />
&nbsp;&nbsp;&nbsp; 这里指的主要是数据源的配置。Tomcat6使用的是DBCP数据源，它的配置方式如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Resource</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"jdbc/test"</span><span>&nbsp;</span><span class="attribute">auth</span><span>=</span><span class="attribute-value">"Application"</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"javax.sql.DataSource"</span><span>&nbsp;</span><span class="attribute">maxActive</span><span>=</span><span class="attribute-value">"100"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">"30"</span><span>&nbsp;</span><span class="attribute">maxWait</span><span>=</span><span class="attribute-value">"10000"</span><span>&nbsp;</span><span class="attribute">username</span><span>=</span><span class="attribute-value">"sa"</span><span>&nbsp;</span><span class="attribute">password</span><span>=</span><span class="attribute-value">"123456"</span><span>&nbsp;</span><span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">"com.microsoft.jdbc.sqlserver.SQLServerDriver"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="attribute">url</span><span>=</span><span class="attribute-value">"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">       &lt;Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/&gt;
</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 它可以直接配置在Context元素下，这时数据源就只有他所属的应用能够访问。如果需要所有的应用能够访问，可以配置在$TOMCAT\conf\context.xml中，直接配置下根元素下即可。这个文件在启动tomcat的时候，所有的应用都会加载。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果需要节省资源，共享同一个数据源，可以配置在Server.xml的GlobalNamingResources节点下，在应用中可以通过别名访问，提供别名的方式是在应用所在的元素下添加如下的子元素，例： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/150455#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">ResouceLink</span><span>&nbsp;</span><span class="attribute">name</span><span>=&#8221;jdbc/test2&#8221;&nbsp;</span><span class="attribute">global</span><span>=&#8221;jdbc/test&#8221;&nbsp;</span><span class="attribute">type</span><span>=&#8221;javax.sql.DataSource&#8221;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">     &lt;ResouceLink name=&#8221;jdbc/test2&#8221; global=&#8221;jdbc/test&#8221; type=&#8221;javax.sql.DataSource&#8221;/&gt;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; name就是别名，global是在GlobalNamingResources所定义的资源。 
<img src ="http://www.blogjava.net/gm_jing/aggbug/252249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-01-21 17:36 <a href="http://www.blogjava.net/gm_jing/articles/252249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BEA dev2dev WebLogic管理精华</title><link>http://www.blogjava.net/gm_jing/articles/126034.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 25 Jun 2007 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/126034.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/126034.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/126034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/126034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/126034.html</trackback:ping><description><![CDATA[[引用]&nbsp;&nbsp; <a href="http://dev2dev.bea.com.cn/bbsdoc/20050974.html">http://dev2dev.bea.com.cn/bbsdoc/20050974.html</a> 
<img src ="http://www.blogjava.net/gm_jing/aggbug/126034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2007-06-25 09:59 <a href="http://www.blogjava.net/gm_jing/articles/126034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>