javax.naming.NameNotFoundException:无法解析' MyDB'。已解决'' Weblogic 12.1.3。 C

时间:2014-08-12 07:25:36

标签: java jndi weblogic12c

从Tomcat迁移到Weblogic 12.1.3时,我遇到了这个异常javax.naming.namenotfoundexception while trying to look up 然后我尝试了以下内容: NameNotFoundException: While trying to lookup 'jdbc' only when publishing from Eclipse Kepler but not IndigoHow to access JNDI data source defined in weblogic 10.3.6

我现在得到了标题错误

我的查找代码

ds = (DataSource) initContext.lookup("MyDB");
weblogic JNDI名称

中的

MyDB

请帮忙吗?

4 个答案:

答案 0 :(得分:26)

与Tomcat不同,weblogic创建多个服务器(通常是管理服务器,另外还有一个其他服务器)。必须为每个服务器分配数据源。在群集环境中,您需要将数据源应用于群集服务器。

  1. 登录Weblogic控制台,检查数据源JNDI名称(不要将其与数据源名称混淆,这纯粹是为了让控制台列表看起来很漂亮)。 JNDI名称应该类似于jdbc / MyDB
  2. 检查数据源目标标签,并确保将其应用于您要将网络应用部署到的服务器/群集。
  3. 重新启动Weblogic。我发现数据源在应用程序代码可见之前有时需要这样做。
  4. 将您的Web应用程序部署到正确的服务器/群集。
  5. 您应该正常连接到数据源。我总是使用Spring JNDI bean,所以我无法帮助确切的语法。 @Maas的建议看起来不错。

答案 1 :(得分:1)

部署后重新启动服务器会有所帮助。

答案 2 :(得分:1)

检查JNDI案例(MyDB!= MyDb)。这听起来微不足道,但它发生在我身上并且很难发现它。由于这是google在搜索此问题时返回的第一个帖子,因此我将其发布在此处,以防它有所帮助。

除此之外,@kiwiron的答案涵盖了其他一切。

答案 3 :(得分:0)

对我来说,从Windows命令行启动托管服务器而不是使用WebLogic管理控制台启动它解决了javax.naming.NameNotFoundException问题。不知道为什么会出现这种情况。