Web项目开发环境中运行在Tomcat时涉及到JNDI的Datasource的解决方法

原创 2012年02月28日 14:39:39

通常在J2EE的开发中,需要用到在服务器上通过JNDI配置的Datasource,如最后的应用在Weblogic上运行,而在开发环境的本地机器中可能是Tomcat,这时候需要在Tomcat上配置一个Datasource,在网上看到很多人的解决办法都是改Tomcat运行环境的server.xml 或者context.xml,其实最简单的办法是在项目的META-INF目录里加入一个context.xml,这样就不用项目组的每个成员都需要改自己机器上的Tomcat配置了。如下图:

context的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource name="xxxDS" auth="Container" type="javax.sql.DataSource"
		maxActive="20" maxIdle="30" maxWait="10000" username="xx" password="xx"
		driverClassName="oracle.jdbc.OracleDriver"
		url="jdbc:oracle:thin:@147.151.240.xx:1521:orcl" />
</Context>
这样的话,下面的通过Java代码访问JNDI获取Datasource的方式在Eclipse开发环境中集成Tomcat和最终发布到Weblogic上都可以运行。
	private void testJNDIDataSource(){
		try {
			InitialContext context = new InitialContext();
			javax.sql.DataSource ds = (javax.sql.DataSource) context.lookup ("java:/comp/env/xxxDS");
			System.out.println(ds);
			
		} catch (Exception e) {
			e.printStackTrace();
		};
	}
如果是和Spring集成的话,也可以不用配置context.xml的方法。通过下面的配置来解决,不过这样引入了为了适应测试环境,而在Production环境本不应该做的配置,所有没有上面这种方法好。
<bean id="dataSource"    
    class="org.springframework.jndi.JndiObjectFactoryBean">    
    <property name="jndiName">    
        <value>xxxDS</value>    
    </property>
    <property name="defaultObject" ref="dataSource1"/>     
</bean>
    <bean id="dataSource1"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@147.151.240.xx:1521:orcl" />
    <property name="username" value="xxx" />
    <property name="password" value="xxx" />
</bean>
在Spring3.1推出了profile配置,可以在不同的环境使用不同的bean配置。
<beans profile="weblogic">
	<bean id="dataSource"    
		class="org.springframework.jndi.JndiObjectFactoryBean">    
		<property name="jndiName">    
			<value>xxxDS</value>    
		</property>
		<property name="resourceRef" value="true"/>     
	</bean> 
</beans>
<beans profile="tomcat">
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@147.151.240.89:1521:orcl" />
		<property name="username" value="but" />
		<property name="password" value="but" />
	</bean>
</beans>
在web.xml中指定要启用的profile是哪一个。
<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>tomcat</param-value>
</context-param>

JNDI初探之tomcat的datasource配置

有人说:没有掌握JNDI就没有真正的理解JavaEE。 看来我一直都没理解呀!JavaEE 的角色在聊JNDI之前,我们先讨论一下JavaEE的角色吧。 J2EE 规范把职责委托给多个开发角色:组...
  • u011499747
  • u011499747
  • 2016-04-14 14:10:57
  • 1040

Tomcat利用JNDI配置DataSource

conf/server.xml配置如下
  • u012557814
  • u012557814
  • 2017-05-03 19:21:10
  • 558

【MyBatis】MyBatis Tomcat JNDI原理及源码分析

一、 Tomcat JNDI JNDI(java nameing and drectory interface),是一组在Java应用中访问命名和服务的API,所谓命名服务,即将对象和名称联系起来...
  • reliveIT
  • reliveIT
  • 2015-08-07 09:30:41
  • 3728

Tomcat配置DruidDataSource JNDI数据源例子

Tomcat配置DruidDataSource JNDI数据源例子
  • NK_TF
  • NK_TF
  • 2017-01-08 11:58:20
  • 1526

Tomcat7数据源配置

Tomcat应用中数据源的配置主要分两种情况:局部和全局 接下来我们分别看看
  • magi1201
  • magi1201
  • 2014-07-29 08:49:43
  • 5525

Junit+spring创建JNDI运行测试用例

项目中数据源采用JNDI的方式,因为JNDI由容器提供, 因此在跑Junit用例时,必须要先创建一个JNDI才行。 其实用spring创建jndi十分的简单,首先编写一个测试用的创建数据源信息的配...
  • johnjobs
  • johnjobs
  • 2014-07-16 15:56:42
  • 2779

Maven项目配置Tomcat下的JNDI数据源

1,在src/main/webapp/WEB-INF/下,创建context.xml文件 WEB-INF/web.xml
  • zhangzikui
  • zhangzikui
  • 2016-09-14 12:57:39
  • 2460

JavaWeb:Tomcat下配置数据源(JNDI)连接数据库

习惯了以硬编码的形式在程序中建立数据库连接,用完就在finally语句块中close一下就结束了。对于重视数据库连接数的应用来说,这样子做会耗费大量的时间和数据库资源,而且硬编码的形式也不甚灵活。 ...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2014-10-29 20:09:11
  • 1841

WebLogic使用总结(一)——WebLogic配置JNDI数据源

一、在WebLogic新建针对Oracle数据库的JNDI数据源   进入weblogic管理控制台,此处是远程访问:http://192.168.1.144:7001/console   点击...
  • u011148770
  • u011148770
  • 2016-12-09 13:33:35
  • 918

Spring配置JNDI及通过JNDI获取DataSource

1、SpringJNDI数据源配置信息: java:comp/env/preSystem 红色部分是tomcat或者其他应用服务器配置的JNDI. 2、关于JNDI的配置(tom...
  • fangqun663775
  • fangqun663775
  • 2016-01-15 10:30:28
  • 2235
收藏助手
不良信息举报
您举报文章:Web项目开发环境中运行在Tomcat时涉及到JNDI的Datasource的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)