`
Frederick
  • 浏览: 116976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

配置tomcat6数据源

    博客分类:
  • J2EE
阅读更多

tomcat6配置数据源

Tomcat6的数据源配置方式和以前的版本不一样了。上网找了好久都没有找到能在tomcat6环境下使用的。经过多次测试,终于找到了一个可行的配置。

<o:p> </o:p>

我们先定义tomcat6的安装根目录为 ${tomcat6},以方便后面的描述。

<o:p> </o:p>

       Tomcat6的服务器配置文件放在 ${tomcat6}/conf 目录底下。我们可以在这里找到 server.xml context.xml。当然,还有其他一些资源文件。但是在在本文中我们只用得上这两个,其他的就不介绍了。

1.   首先,需要为数据源配置一个JNDI资源。

我们的数据源JNDI资源应该定义在context元素中。

tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

我们当然推荐把应用需要的JNDI资源配置在context.xml文件中,而不是server.xml文件中。

<o:p> </o:p>

1.1.  Context元素的范围

由于context元素的可用范围是可以控制的,我们可以根据需要为Context元素定义不同级别的可用范围。

<o:p> </o:p>

1.1.1.   全局可用

全局可用的范围意味着tomcat服务器下面的所有应用都可以使用这个context元素定义的资源。

全局可用范围的context元素在文件 ${tomcat6}/conf/context.xml 文件中描述。这个文件在tomcat刚刚被安装的时候,是没有定义任何资源的。我们可以看到,这个文件的内容:

 

<o:p>xml 代码</o:p>

  1. <Context>  
  2.     <WatchedResource>WEB-INF/web.xmlWatchedResource>  
  3. Context>  

    其中的 <watchedresource></watchedresource>WEB-INF/web.xml表示服务器会监视应用的WEB-INF/web.xml 文件来知道那个应用会引用在此处定义的资源。

<o:p></o:p>

1.1.2.   指定的虚拟主机可用

顾名思义,指定的虚拟主机内可用就是说,在tomcat服务器配置的虚拟主机中,只有指定的那个虚拟主机上跑的应用才能使用。什么是虚拟主机和如何配置虚拟主机在这里就不描述了,有兴趣的同学自己去查tomcat的官方资料。

要配置一个虚拟主机可用的context资源,可以在${tomcat6}/conf/目录下的文件 ${enginename}/${hostname}/context.xml.default 中表述。

比如,一般一个tomcat服务器安装好了以后,都有一个默认的叫做 Catalina 的引擎,在这个引擎下有一个叫做 localhost 的虚拟主机。我们的应用一般都放在这个虚拟主机下。关于这个虚拟主机的配置,不再本文表述,有兴趣的同学可以自己去查tomcat的官方文档。

<o:p></o:p>

那么,如果我们想要配置一个在 Catalina/localhost 虚拟主机下都可以使用的资源,我们需要在目录 ${tomcat6}/conf 下建立路径 Catalina/localhost,在这个路径下创建文件 context.xml.default。全路径是 ${tomcat6}/conf/Catalina/localhost/context.xml.default

<o:p> </o:p>

1.1.3.   指定的应用可用

顾名思义,一个指定的应用可用的context元素,意味着这是一个只有指定的引擎,指定的虚拟主机,指定的应用才可以使用的context元素。

如果我们用appname来代表这个指定的这个指定的应用的名字,那么元素的定义应该被放置在 ${tomcat}/conf/${enginename}/${hostname}/${appname}.xml文件中。

例如,假设在localhost下我们有一个web应用叫做FiberScheduler,那么我们应该创建文件 ${tomcat6}/conf/Catalina/localhost/FiberScheduler.xml

<o:p></o:p>

1.2.  Context元素的配置

好了,啰唆了这么多,终于到了介绍到底这个context元素该怎么配置了。

<o:p></o:p>

1.2.1.   Context元素的属性

首先,假定我们这个元素是为一个名叫 FiberSchedulerweb应用创建的,那么这个web应用的放置路径应该是目录 ${tomcat6}/webapps/FiberScheduler(当然,如果你使用的是war包的话,那么就应该是 ${tomcat6}/webapps/FiberScheduler.war 文件了)。所以,我们的context元素应该指定属性 path=”FiberScheduler” docBase=”FiberScheduler”

然后,这是一个可以动态重新加载的资源,所以我们应该指定属性 reloadable=”true”

现在,我们的context元素的开始tag看起来是这个样子:<o:p> </o:p>

<o:p>
xml 代码
  1. <Context path="FiberScheduler"    
  2.          docBase="FiberScheduler"  
  3.          debug="5"    
  4.          reloadable="true"    
  5.          crossContext="true">  

 

1.2.2.   这个context元素监视的引用元素定义文件

    我们还是要指定一个被监视的资源,在这个资源里面,会定义context中定义的那个资源被引用了。

对我们的web应用而已,这个被监视的资源当然是 web.xml 文件,同时,也意味着我们应该在 web.xml 中定义JNDI资源引用元素。

现在,我们的context元素有了一个子元素:<o:p></o:p>

  1. <WatchedResource>WEB-INF/web.xmlWatchedResource>  

1.2.3.

我们的数据源是作为context中定义的一个资源存在的。当然,也还可以在context中定义其他的JNDI资源。

我们先假定一些数据库的资源信息:我们需要配置一个oracle的数据源名叫FiberSchedulerDS,连接数据库的用户名是 user1,密码是 password1,数据库驱动程序是oracle.jdbc.OracleDriver,数据流连接urljdbc:oracle:thin:@localhost:1521:fred。那么,我们的资源定义元素看起来是这个样子:

xml 代码
<o:p>
  1. <Resource name="FiberSchedulerDS"  
  2.          auth="Container"  
  3.          type="javax.sql.DataSource"    
  4.          maxActive="4"    
  5.          maxIdle="30"    
  6.          maxWait="5000"  
  7.          username="netgeo"    
  8.          password="netgeo"    
  9.          driverClassName="oracle.jdbc.OracleDriver"    
  10.          url="jdbc:oracle:thin:@localhost:1521:fred"/>  

 

我们可以在一个context元素中定义多个资源,格式类似。我在例子里面再定义一个叫做FiberSchedulerJbpmDS的数据库连接池资源。

<o:p></o:p>

1.2.4.   完整的context元素

好了,现在我们来看一看完整的context元素的样子:

xml 代码
<o:p>
  1. <Context path="FiberScheduler"    
  2.          docBase="FiberScheduler"  
  3.          debug="5"    
  4.          reloadable="true"    
  5.          crossContext="true">  
  6.   
  7.     <WatchedResource>WEB-INF/web.xmlWatchedResource>  
  8.   
  9.     <Resource name="FiberSchedulerDS"  
  10.              auth="Container"  
  11.              type="javax.sql.DataSource"    
  12.              maxActive="4"    
  13.              maxIdle="30"    
  14.              maxWait="5000"  
  15.              username="netgeo"    
  16.              password="netgeo"    
  17.              driverClassName="oracle.jdbc.OracleDriver"    
  18.              url="jdbc:oracle:thin:@localhost:1521:fred"/>  
  19.   
  20.     <Resource name="FiberSchedulerJbpmDS"  
  21.              auth="Container"    
  22.              type="javax.sql.DataSource"    
  23.              maxActive="4"    
  24.              maxIdle="30"  
  25.              maxWait="5000"    
  26.              username="FiberSchedulerJBPM"  
  27.              password="FiberSchedulerJBPM"    
  28.              driverClassName="oracle.jdbc.OracleDriver"    
  29.              url="jdbc:oracle:thin:@localhost:1521:fred"/>  
  30. Context>  

 

2.   然后,配置web应用引用资源

前面我们定义context元素的时候,指定了一个监视资源。现在我们就需要在这个监视资源里面声明我们需要引用的JNDI资源。

</o:p></o:p></o:p>
分享到:
评论
2 楼 we_sky 2011-11-24  
1 楼 wolma 2009-01-13  
好文,收藏。

相关推荐

Global site tag (gtag.js) - Google Analytics