Web项目开发环境中运行在Tomcat时涉及到JNDI的Datasource的解决方法
2012-02-28 14:39
771 查看
通常在J2EE的开发中,需要用到在服务器上通过JNDI配置的Datasource,如最后的应用在Weblogic上运行,而在开发环境的本地机器中可能是Tomcat,这时候需要在Tomcat上配置一个Datasource,在网上看到很多人的解决办法都是改Tomcat运行环境的server.xml 或者context.xml,其实最简单的办法是在项目的META-INF目录里加入一个context.xml,这样就不用项目组的每个成员都需要改自己机器上的Tomcat配置了。如下图:
![](http://hi.csdn.net/attachment/201202/28/0_13304101287ljU.gif)
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上都可以运行。
![](http://hi.csdn.net/attachment/201202/28/0_13304101287ljU.gif)
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>
相关文章推荐
- IDEA编辑器运行Web项目时,导包成功,Tomcat却找不到包的解决方法(ClassNotFound)
- Eclipse中tomcat不识别web项目,导致无法部署运行的解决方法
- 关于eclipse 运行了 maven install后 在tomcat中启动web项目出现classnofind的异常解决方法
- web项目发布至tomcat的ROOT下方法(开发环境和部署环境)
- MyEclipse+Tomcat开发Web项目时修改内容不能及时显示问题解决方法
- web项目发布至tomcat的ROOT下方法(开发环境和部署环境)
- web项目发布至tomcat的ROOT下方法(开发环境和部署环境)
- web项目发布至tomcat的ROOT下方法(开发环境和部署环境)
- vmware安装mac的maverick 10.9系统后ios7开发环境xcode 5项目的运行(run不了项目)的解决方法
- Struts2: Jdk1.5 + Tomcat 5.0.28环境下运行Struts2的项目报错及解决方法
- maven项目用 run on server 运行报classNotFound错误,lib没有导入到tomcat中,解决方法:
- 开发环境如何运行web项目不带项目名字
- 【Hibernate框架开发之一】搭建Hibernate环境并成功运行第一个项目HelloHibernate并解决3个常出现的运行问题;
- 关于导入到myeclipse里的web项目不能添加tomcat服务的解决方法
- 开发环境下调试没有问题,发布后运行却提示无法更新数据库 *.MDF,因为数据库是只读的解决方法
- Java Web开发Tomcat中三种部署项目的方法
- 项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法
- Java Web开发项目中中文乱码解决方法汇总
- 用MyEclips和Tomcat建立web项目无法使用中文-解决方法
- webpack vue项目开发环境局域网访问方法