无法在 Weblogic 上部署

Posted

技术标签:

【中文标题】无法在 Weblogic 上部署【英文标题】:Impossible to deploy on Weblogic 【发布时间】:2019-10-04 19:59:15 【问题描述】:

我尝试在这些问题中应用所有解决方案:

Tomcat vs Weblogic JNDI Lookup

javax.naming.NameNotFoundException:while trying to lookup jdbc

但他们没有解决我的问题。 我正在使用 Maven 和 WebLogic。

在我的 web.xml 中,我使用了标签“res-ref-name”。

非常感谢!

【问题讨论】:

你怎么编辑了这个问题?现在所有答案都没有任何意义 【参考方案1】:

您已使用名称“jndi/ConsipGfrDS”注册了您的数据源,但使用“jdbc/ConsipGfrDS”查找。在这两种情况下都使用一个(无论如何,但相同的)名称。

我建议您在 JNDI 中使用名称“jdbc/ConsipGfrDS”,因为如果您在 JNDI 中有很多对象,则将对象分类更容易。

【讨论】:

【参考方案2】:

这是老式的 JNDI,这里有几个问题。

您的web.xml 已正确定义

<res-ref-name>jdbc/ConsipGfrDS</res-ref-name>

这些资源引用在 JNDI java:comp/env 命名空间中定义名称,也称为 Web 应用程序本地的组件环境命名空间。这意味着您的 Web 应用程序中数据源的完整 JNDI 名称实际上是 java:comp/env/jdbc/ConsipGfrDS,因此您的查找代码应该是:

@Bean
public DataSource dataSource() throws NamingException 
    Context ctx = new InitialContext();
    return (DataSource)ctx.lookup("java:comp/env/jdbc/ConsipGfrDS");

到目前为止,我们有平台独立(即应用服务器)代码。您已将平台相关部分正确推送到weblogic.xml文件中。

但是,这是您的第二个问题所在。 weblogic.xml 包含一个小错误。您提供的显示 JDBC 数据源配置的 weblogic 控制台图像显示 JNDI 名称为 jdbc/ConsipGfrDS。因此,更新如下:

<?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>
        <!-- match jndi name in weblogic -->
        <jndi-name>jdbc/ConsipGfrDS</jndi-name>
        <!-- match res-ref-name name in web.xml -->
        <res-ref-name>jdbc/ConsipGfrDS</res-ref-name>
    </resource-description>

</weblogic-web-app>

玩得开心!

【讨论】:

您按照我的建议更改了 java 代码?您是否有相同的错误消息 - 或已更改?

以上是关于无法在 Weblogic 上部署的主要内容,如果未能解决你的问题,请参考以下文章

在weblogic上部署was包报错,求大神!

在weblogic上部署vue项目

在weblogic12c上部署springBoot应用

为啥我部署了项目,也启动了weblogic服务,为啥打开网页依然是该也无法显示?

windows 7本地安装的weblogic,部署项目启动报错。

Spring Boot App 部署到 Weblogic 12c 并且无法启动