2

这是我们在将应用程序从当前生产环境迁移到新数据中心环境时面临的另一个问题(请参阅下面的详细信息)

  • 当前生产环境:Java 1.4、Java EE 3、WAS 5.1、JSF 2.1
  • 新环境:Java 1.5、Java EE 5、WAS 6.1、JSF 2.1

这里我们有一个具有以下结构的第三方 jar 文件(检查图像 - 请原谅我隐藏了一些细节)
替代文字


此类具有从 ResourceBundle (db.properties) 加载数据库属性的代码。这是 Cavaj 渲染的代码:

    私有静态资源包 getDBProperties()
    {
        如果(dbProperties == null)
        {
            dbProperties = ResourceBundle.getBundle("db");
        }
        返回数据库属性;
    }

此应用程序在当前环境下运行良好。但不知何故,当我们将应用程序移动到新环境时,我们会得到一个“MissingResourceException”(见下文):

引起:java.util.MissingResourceException:找不到捆绑包
基本名称 db,语言环境 en_US
在
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:863)
在 java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:832)
在 java.util.ResourceBundle.getBundle(ResourceBundle.java:576)
在
com.myco.wo.vs.util.OrderLovUtilities.getDBProperties(OrderLovUtilities.java:195)

我们尝试了以下解决方法,但都没有奏效:

  1. 将 db.properties 重命名为 db_en_US.properties
  2. 将属性文件放入jar
  3. 在 EAR 级别移动 jar 文件。

请建议这里可能有什么问题。我们能做些什么来让它工作:)

注意:文件 db.properties 位于 WEB-INF/classes 目录下。我们也尝试将其放在上述位置,但无济于事。

问候,
-阿什什

4

2 回答 2

1

尝试在您的 ent 设置中更改类加载器的顺序。EAR 和 WAR 级别的管理控制台中的应用程序(从PARENT_FIRSTPARENT_LAST)。

在我看来,第 3 方类 ( com.myco.wo.vs.util.OrderLovUtilities) 不是从 WEB-INF/lib 中的 jar 文件加载的,而是来自服务器上的其他位置。然后它的类加载器看不到属性文件。

如果这是问题所在,更改类加载器的顺序应该会导致加载预期的类副本。

此外,管理控制台中的类加载器查看器可以对此有所了解。

于 2009-05-05T16:23:13.663 回答
0

您是否尝试过将 db.properties 文件放在 WEB-INF/classes 目录下?

于 2009-05-02T09:23:24.010 回答