tomcat下jndi的三种配置方式

  jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称

访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。

         tomcat配置jndi有全局配置和局部配置。大致的有以下三种配置方式:

 

 第一种:全局配置。

1)在tomcat的conf文件夹下的context.xml配置文件中加入:

[html]  view plain  copy
  1. <Resource name="jndi/mybatis"   
  2.             auth="Container"   
  3.             type="javax.sql.DataSource"   
  4.             driverClassName="com.mysql.jdbc.Driver"   
  5.             url="jdbc:mysql://localhost:3306/appdb"   
  6.             username="root"   
  7.             password="123456"   
  8.             maxActive="20"   
  9.             maxIdle="10"   
  10.             maxWait="10000"/>      


2)在项目的web.xml中加入资源引用:

[html]  view plain  copy
  1. <resource-ref>  
  2.   <description>JNDI DataSource</description>  
  3.   <res-ref-name>jndi/mybatis</res-ref-name>  
  4.   <res-ref-type>javax.sql.DataSource</res-ref-type>  
  5.   <res-auth>Container</res-auth>  
  6. </resource-ref>  

其中res-ref-name值要和context.xml的name值一致。

 

3)jndi测试方法:

[java]  view plain  copy
  1. public void testJNDI() throws NamingException, SQLException{  
  2.     Context ctx = new InitialContext();  
  3.     DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/mybatis");  
  4.     Connection conn = ds.getConnection();  
  5.     System.out.println(conn.isClosed());  
  6.   
  7. }  


4)在jsp中调用加载jndi方式,不可以直接用main方法测试,必须通过启动容器从jsp中调用:

[java]  view plain  copy
  1. TestPageAccessURL test = new TestPageAccessURL();  
  2. test.testJNDI();  


 

第二种:局部配置(不推荐)。

1)在tomcat的server.xml的<host>标签内,添加:

[html]  view plain  copy
  1. <Context path="/demo_jndi" docBase="/demo_jndi">  
  2.    <Resource  
  3.      name="jndi/mybatis"  
  4.      type="javax.sql.DataSource"  
  5.      driverClassName="com.mysql.jdbc.Driver"  
  6.      maxIdle="2"  
  7.      maxWait="5000"  
  8.      username="root"  
  9.      password="123456"  
  10.      url="jdbc:mysql://localhost:3306/appdb"  
  11.      maxActive="4"/>  
  12. </Context>  

其他配置同第一种方式。

 

第三种:局部配置。

1)在项目的META-INFO下面新建context.xml。加入:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context>  
  3.     <Resource name="jndi/mybatis"   
  4.                 auth="Container"   
  5.                 type="javax.sql.DataSource"   
  6.                 driverClassName="com.mysql.jdbc.Driver"   
  7.                 url="jdbc:mysql://localhost:3306/appdb"   
  8.                 username="root"   
  9.                 password="123456"   
  10.                 maxActive="20"   
  11.                 maxIdle="10"   
  12.                 maxWait="10000"/>      
  13. </Context>  

其他配置同第一种方式。

总结:如果要配置局部的话,推荐使用第三种方式,这样不依赖tomcat了。但是还是推荐使用第一种方式好,虽然依赖tomat,但是是全局的,而且可以配置
多个。对于以后切换使用方便。
在项目的web.xml中添加的资源引用可有可无。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Tomcat配置JNDI,你可以按照以下步骤进行操作: 1. 打开Tomcat配置文件`tomcat/conf/server.xml`。 2. 在`<GlobalNamingResources>`元素中配置全局资源,例如数据库连接池。例如,你可以添加一个`<Resource>`元素来定义一个连接池: ```xml <GlobalNamingResources> <Resource name="jdbc/myDataSource" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="your_username" password="your_password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/your_database"/> </GlobalNamingResources> ``` 在上面的示例中,我们定义了一个名为`jdbc/myDataSource`的资源,它是一个`javax.sql.DataSource`类型的数据库连接池。 3. 在`<Context>`元素中引用全局资源。在你的Web应用程序的上下文配置文件(通常是`META-INF/context.xml`)中,你可以使用`<ResourceLink>`元素引用全局资源。例如: ```xml <Context> <ResourceLink name="jdbc/myLocalDataSource" global="jdbc/myDataSource" type="javax.sql.DataSource"/> </Context> ``` 在上面的示例中,我们将全局资源`jdbc/myDataSource`映射到本地资源`jdbc/myLocalDataSource`。 4. 在你的应用程序中使用JNDI查找资源。你可以通过在代码中使用JNDI查找资源来获取连接池实例。例如,在Java中可以这样做: ```java Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); DataSource dataSource = (DataSource) envContext.lookup("jdbc/myLocalDataSource"); Connection connection = dataSource.getConnection(); ``` 在上面的示例中,我们通过JNDI查找资源`jdbc/myLocalDataSource`来获取`javax.sql.DataSource`实例,并从中获取数据库连接。 请注意,这只是一个基本的示例,具体的配置和使用方法可能会因你的需求和环境而有所不同。你可以根据你的实际情况进行相应的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值