2012-07-18 78 views
2

林具有麻烦映射的Weblogic(12c)的定义JNDI数据源到本地JNDI名称。映射的NameNotFoundException JNDI数据源到本地名称

我在定义为“mysqltestds”的WebLogic MySQL的数据源数据源,我想在Web应用程序中映射我到本地名“localds”

我的web.xml性能

<resource-ref> 
    <res-ref-name>localds</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

与weblogic.xml中

<weblogic-web-app> 
    <resource-description> 
     <res-ref-name>localds</res-ref-name> 
     <jndi-name>mysqltestds</jndi-name>lls 
    </resource-description> 
</weblogic-web-app> 

当我使用全局名称获得数据源“mysqltestds”它工作正常。

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("mysqltestds"); 
dataSource = (DataSource) resource; 

然而,当我尝试 “localds” 失败,出现错误:

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("localds"); 
dataSource = (DataSource) resource; 

javax.naming.NameNotFoundException: Unable to resolve 'localds'. Resolved ''; remaining name 'localds'

任何人的帮助。我按照这个stackoverflow问题Tomcat vs Weblogic JNDI Lookup的方向,但我没有取得任何成功。

回答

1

我最终通过试验和错误的工作了这一点。

它,当你使用的是本地资源引用看来,你必须使用的“java:comp/env的/ ..”来称呼它的前缀,所以我的Java代码工作时,我做了以下修改:

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("java:comp/env/localds"); 
dataSource = (DataSource) resource; 

希望其他人是否有类似的问题

1

夫妇的事情。
首先要检查的是确保您实际将数据源部署到您正在访问的服务器。因为如果你没有,你会得到确切的消息。

此外,如果您在控制台转到看看服务器页面,然后点击你正在使用的服务器。

再有就是所谓的像jndiViewer页面上的链接,你应该能够浏览您的数据源,以确认其位置。

+0

我知道它的展开,因为如果我使用WebLogic JNDI名称(“mysqltestds”),它的工作原理,这是有用的。另外,我可以在JNDI查看器中看到它。 – Dunderklumpen 2012-07-18 01:15:59

相关问题