我们有一个个人java库,它部署在tomcat服务器上(v5.5& v6)。 该库与许多Web应用程序共享,因此它部署在tomcat目录中的shared / lib上。
异常,我必须在这个库中创建一个新类,通过JNDI查找jdbc数据源。
为此,我的代码在这里:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/corp.xx.xx.xxxxDS");
所有上下文都没有问题地实例化。但是当它查找jdbc数据源时,我有一个例外:在上下文中找不到名称jdbc
我们不在网络应用中,这是一个问题吗? 是否可以使用ResourceLink声明context.xml?怎么样?
nb:jndi在server.xml中设置(GlobalNamingResources中的资源)
答案 0 :(得分:2)
<Context ...>
...
<ResourceLink name="linkToGlobalResource"
global="simpleValue"
type="java.lang.Integer"
...
</Context>
其中 name 是新名称(相对于java:comp / env的名称), global 是在server.xml中配置的全局jndi名称
因此,从您的代码中,查找 linkToGlobalResource ,它将为您提供链接的全局资源
参考:http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Resource_Links
答案已更新:
你的JNDI访问将来自web-app而不是共享jar,因为独立jar没有上下文的概念。