Lut*_*ker 25 java tomcat weblogic jndi java-ee
我们使用的Weblogic服务器已配置为允许JNDI数据源名称,如"appds".
对于开发(localhost),我们可能正在运行Tomcat,并且当在server.xml的<context>部分中声明时,Tomcat将在JNDI树中的"java:comp/env/jdbc/*"上挂起JNDI数据源.
问题:在Weblogic中,JNDI查找是"appds",而在Tomcat中,似乎我必须提供正式的"java:comp/env/jdbc/appds".我担心Tomcat版本是一个隐含的标准,但不幸的是,我不能改变Weblogic的配置...所以这意味着我们最终得到两个不同的spring配置文件(我们使用的是spring 2.5)来促进不同的环境.
有没有一种优雅的方式来解决这个问题.我可以直接在Tomcat中查看JNDI名称吗?Spring可以在两个地方都有名字和外观吗?谷歌搜索或建议会很棒.
Leo*_*nel 19
如何在Web应用程序中使用单个JNDI名称
我自己几个月来一直在努力.最好的解决方案是使您的应用程序可移植,以便在Tomcat和Weblogic中具有相同的JNDI名称.
为此,您可以更改您的web.xml并spring-beans.xml指向单个jndi名称,并提供每个供应商特定的jndi名称的映射.
我把每个文件放在下面.
你需要:
<resource-ref />web.xml中的条目,供您的应用使用单个名称WEB-INF/weblogic.xml用于将jndi名称映射到WebLogic管理的资源的文件META-INF/context.xml用于将jndi名称映射到Tomcat管理的资源的
文件作为一般规则,喜欢在您的应用中使用您的jndi名称jdbc/MyDataSource,jms/ConnFactory并避免使用前缀java:comp/env/.
此外,数据源和连接工厂最好由容器管理并与JNDI一起使用.在应用程序中实例化数据库连接池是一个常见错误.
弹簧
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
<jee:jndi-lookup jndi-name="jdbc/appds"
id="dataSource" />
</beans>
Run Code Online (Sandbox Code Playgroud)
web.xml中
<resource-ref>
<description>My data source</description>
<res-ref-name>jdbc/appds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
weblogic.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.oracle.com/weblogic/weblogic-web-app http://http://www.oracle.com/technology/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
<resource-description>
<jndi-name>appds</jndi-name>
<res-ref-name>jdbc/appds</res-ref-name>
</resource-description>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)
META-INF/context.xml(用于Tomcat)
<Context>
<ResourceLink global="jdbc/appds" name="jdbc/appds" type="javax.sql.DataSource"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
mar*_*its 11
JndiLocatorSupport有房产resourceRef.设置为true时,"java:comp/env /"前缀将自动添加前缀.因此,我认为从Tomcat迁移到Weblogic时区分此参数是正确的.
| 归档时间: |
|
| 查看次数: |
46246 次 |
| 最近记录: |