我有一个Web应用程序,它是在Weblogic 8.1下运行的。它是一个使用Java 1.4的struts 1.1应用程序。
为了可维护性,我们决定尝试将此应用程序在Java 6和Weblogic 10gR3下运行,与我们所有其他应用程序一致。我们一直在推迟这个,因为我们有一个主要版本,因为用户正在尖叫的功能,但现在应用程序在用户验收测试中,我们认为是时候把手指拉出来让这个东西运行在更新的JVM和容器下。
为此,我已经加载了源代码并在Java 6下进行了编译,并使用其构建脚本生成包含应用程序的.war文件。
然后我尝试在weblogic 10gR3服务器下部署此应用程序。但是,虽然部署步骤似乎没有任何问题,但是当它们完成时,我在weblogic控制台的“域结构”面板中单击“部署”时,应用程序列出状态为“失败”。
我检查了weblogic日志,但我能看到的唯一错误与无法找到log4j配置有关 - 这不应该阻止应用程序本身运行。我是猜测可能在设置jdbc连接的方式上存在一些错误 - 这在weblogic 10.3与8.1中有很大不同。但是我不确定这是问题的原因 - 并且在任何情况下我都在weblogic 10.3下设置了数据源,因此它具有相同的jndi名称,因此它应该选择它(虽然我对这些问题的专家并不是很接近所以我可能是错的)。
我注意到的一件事与我们拥有的其他weblogic 10gR3应用程序不同,就是这个程序访问数据库的方式。我试图转换的程序在其web.xml中有以下条目:
<context-param>
<param-name>dataSource</param-name>
<param-value>@database.dataSource@</param-value>
</context-param>
<context-param>
<param-name>db.drivertype</param-name>
<param-value>@database.drivertype@</param-value>
</context-param>
<context-param>
<param-name>db.host</param-name>
<param-value>@database.host@</param-value>
</context-param>
<context-param>
<param-name>db.dbname</param-name>
<param-value>@database.name@</param-value>
</context-param>
<context-param>
<param-name>db.username</param-name>
<param-value>@database.username@</param-value>
</context-param>
<context-param>
<param-name>db.password</param-name>
<param-value>@database.password@</param-value>
</context-param>
<context-param>
<param-name>db.port</param-name>
<param-value>@database.port@</param-value>
</context-param>
<context-param>
<param-name>db.protocol</param-name>
<param-value>@database.protocol@</param-value>
</context-param>
各种@ somestring @字段被构建脚本替换为实际值,它从deploy.properties文件中获取它们,以便我们可以根据我们是否正在编译开发来指定实时生产数据库或开发数据库或者生产。
另一方面,我用作引用的另一个应用程序使用了使用persistence.xml文件配置的EJB实体bean - 我可以在实际数据库中找到的唯一引用是:
<jta-data-source>ourProductionDataSource</jta-data-source>
引用在weblogic 10gR3的weblogic控制台的“域结构”窗格的“服务”部分的JDBC下的“数据源”部分中设置的数据源。
即使这与原始weblogic 8应用程序完全不同,因为使用weblogic 8应用程序,我们需要设置一个具有所有数据库详细信息的JDBC连接池,然后设置一个单独的JDBC数据源,该数据源引用JDBC连接池,但提供了一个JNDI名称,可用于在java应用程序中查找数据源。
我真的不知道如何将其变成weblogic 10gR3将要识别的内容,以便传统的weblogic 8应用程序知道如何查找其数据。我当然假设这是应用程序不能成功部署的主要问题(我可能是错的)。在尝试解决这个问题时,我还创建了一个数据源工厂(在weblogic 10gR3下),希望这可能能够模拟weblogic 8应用程序所需的内容。然后我引用了我在.propery文件的database.dataSource条目中创建的数据源工厂名称,以便将其交换到应用程序的web.xml中的以下条目:
<context-param>
<param-name>dataSource</param-name>
<param-value>@database.dataSource@</param-value>
</context-param>
然而,这似乎没有解决问题。
为了让这个应用程序(为weblogic 8.1编写)在weblogic 10gR3下运行,有谁可以给我一些关于我需要关注的事情的线索?
谢谢大家伙
David Buddrige。
答案 0 :(得分:0)
同时验证weblogic.xml
配置是否正确。有时context-root
导致应用程序在Weblogic 10.3上部署失败,即使它在Weblogic 8上运行正常。
以下需要出现在weblogic.xml
:
<context-root>/</context-root>