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

在从Tomcat迁移到Weblogic 12.1.3时,我javax.naming.namenotfoundexception while trying to look up遇到了这个exceptionjavax.naming.namenotfoundexception while trying to look up然后我尝试了以下内容: NameNotFoundException:尝试仅在从Eclipse Kepler发布时查找“jdbc”而不是Indigo和How访问weblogic 10.3.6中定义的JNDI数据源

我现在得到了标题错误

我的查找代码

 ds = (DataSource) initContext.lookup("MyDB"); 

在weblogic JNDI名称中

 MyDB 

有什么帮助吗?

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

  1. 登录Weblogic控制台,检查数据源JNDI名称(不要将其与数据源名称混淆,这纯粹是为了使控制台列表看起来很漂亮)。 JNDI名称应该类似于jdbc / MyDB
  2. 检查数据源“ 目标”选项卡,并确保将其应用于要将Web应用程序部署到的服务器/群集。
  3. 重新启动Weblogic。 我发现数据源有时需要它才能显示应用程序代码。
  4. 将Web应用程序部署到正确的服务器/群集。

您应该正常连接到数据源。 我总是使用Spring JNDI bean,所以我无法使用确切的语法。 @Maas的建议看起来不错。

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

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

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

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