无法在 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服务,为啥打开网页依然是该也无法显示?