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>

相关文章推荐

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间。Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕。如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况。

人们一直在推动MySQL发展到它的极限。这里是100条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技...

Linux中Java的web项目开发环境配置(JDK1.7+Tomcat7+Mysql5.5+eclipse)

一:系统环境和软件介绍 1:本操作的系统环境为:RadHat 具体信息如下: 2:JDK版本为:jdk-7-linux-i586.tar.gz 3:Tomcat版本为 :apache-tomcat-7...

javaweb学习(1):win10配置javaee开发环境eclipse+tomcat+mysql,web小项目

前言: 本案例是一个简单,但是完整的javaweb小项目。 1,主要功能:实现注册和登陆功能。功能截图如下: 图1:主页 图2:登录页面 图3:注册页面 2,用到的we...

Javaweb第一课:配置Tomcat服务器、搭建web开发环境、管理webapps项目

服务器配置: 1、解压Tomcat目录如下: 2、配置环境变量: java_home(jdk的根目录) jre_home 3、在E:\tomcat\apache-tomcat...

在Tomcat上配置Proxool的DataSource(Jndi) --第2种方法

第一个方法是在容器,也就是Tomcat上做配置,但是,有时候会不适用,比如虚拟主机,它可能不允许你在机器上做配置,那样,就只能从自身的程序着手. 首先,写一个Proxool的配置文件.....放在 ...
  • big1980
  • big1980
  • 2011年03月24日 11:17
  • 901

Flex4 + FluorineFx配置开发环境时遇到的问题及解决方法

最近做一个项目时想使用Flex4 + PureMVC做客户端,呵呵,这个优点就不多说了。对于PureMvc框架这里就不提了,因为官网上有最佳实践的中文版可以阅读一下,不是很困难,至少我配置时没遇到什么...
  • Neils03
  • Neils03
  • 2011年08月26日 13:04
  • 1733

从其他项目复制cs类文件到新项目后无法引用问题解决方法(开发环境vs2010,asp.net项目)

相信很多.net开发员都遇到过类似这样的问题:之前开发过的项目中的部分类对现有项目又有,因此想把他们复制到新项目中来使用,以减少代码编写量(当然,之前的程序如果能够完全满足新项目,可以直接生成dll,...

tomcat发布web项目JSP页面打开报空指针异常解决方法。

访问JSP页面直接报: HTTP Status 500 -type Exception reportmessagedescription The server encountered an inte...

eclipse for mac部署web项目至本地的tomcat但在webapps中找不到的解决方法

问题产生原因: eclipse不像myeclipse一样,将部署的web项目到tomcat下的webapps文件夹中,而是默认放在一个wtpwenapps文件夹下,而放在wtpwebapps文件夹下...

如何让visio studio开发的程序在没有.net的环境中运行

Net框架目前逐步在普及了,仍然有很多人在寻找如何让.NET程序脱离.NET框架的方法。现成的工具有Xenocode 的postbuidle或者vas,还有Salamander .NET Linker...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web项目开发环境中运行在Tomcat时涉及到JNDI的Datasource的解决方法
举报原因:
原因补充:

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