【问题标题】:How to make a property file available to EJB in WebSphere Application Server 8如何在 WebSphere Application Server 8 中使属性文件可用于 EJB
【发布时间】:2012-05-10 00:18:26
【问题描述】:

我按照 Rational Application Developer for WebSphere 8.0.4 帮助中的教程从 WSDL 文件创建了 JAX-WS Web 服务和 EJB 框架。

它创建了一个 EJB 项目来包含我的 EJB 代码。 它创建了一个 EJBEar 项目来构建一个 ear 文件。 它创建了一个RouterWebProject来创建一个war文件。

RouterWebProject 提供 servlet 信息,以便我可以将 HTTP soap 请求发布到 servlet,以路由到我在 EJB 中的 Web 服务代码。

EJB 服务代码调用同一 EJB 项目中的一个类,该类使用 ResourceBundle 读取名为 AppSDKExamples.properties 的属性文件

static {
    ResourceBundle props = ResourceBundle.getBundle("AppSDKExamples", Locale.getDefault());
    brokerPartnerId = props.getString("broker.partner.id");
    buyPartnerId    = props.getString("svc.dealer.partner.id");
    sellPartnerId   = props.getString("platform.partner.id");
    sellPartnerId2  = props.getString("platform.partner.id2");
    accountNumber   = props.getString("account.number");
}

我尝试将 AppSDKExamples.properties 文件放置在我能想到的任何地方,但我总是得到 java.util.MissingResourceException。

如何使该属性文件可用于 EJB 代码?

目前 EJB 的耳朵是这样的:

  • lib/AppSDKExamples.properties
  • lib/AppSDKExamples_en_US.properties
  • lib/其他 jar 文件
  • META-INF/MANIFEST.MF(不包含类路径,我不知道如何设置。)
  • EJB.jar
  • WebProject.war

EJB.jar 如下所示:

  • com/activant/web/services/examples/class 文件,用于查找属性文件
  • com/activant/web/services/iaptest/web 服务的类文件
  • META-INF/MANIFEST.MF(在类路径中有 AppSDKExamples.properties 和 AppSDKExamples_en_US.properties)
  • AppSDKExamples.properties
  • AppSDKExamples_en_US.properties

war 文件如下所示:

  • lib 包含与 EJB.jar 文件相同的 jar 文件
  • META-INF(类路径:/lib EJB.jar)
  • WEB-INF/classes 这个文件夹包含两个属性文件。
  • WEB-INF/lib 这个文件夹包含两个属性文件。
  • WEB-INF/ibm-web-bnd.xml
  • WEB-INF/ibm-web-ext.xml
  • WEB-INF/web.xml

对此的任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: properties ejb websphere


    【解决方案1】:

    如果属性文件位于 EJB 的根目录,那么 EJB 类应该能够找到属性文件。如果您在启用 Java 2 安全性的情况下运行,那么您需要授予 FilePermission; ${webComponent} 和 ${ejbComponent} 参见 PROFILE_HOME/config/cells/CELL/nodes/NODE/app.policy。

    仅仅将属性文件放在 EAR/lib 中是行不通的,因为 EAR/lib/ 目录不在类路径中,只有其中的 .jar 文件在类路径中。将Class-Path: lib/ 添加到 EJB jar MANIFEST.MF 可能会起作用,但 JavaEE 规范不需要目录类路径,因此我不知道 WebSphere Application Server 是否支持它们。

    直接在 MANIFEST.MF 类路径中引用属性文件也不起作用,因为仅支持 JAR 和目录(有关目录的 JavaEE 警告请参见上文)。

    一般来说,最好从/lib 中删除前导斜杠。从 JavaEE 平台规范中不清楚这是否应该引用 EAR 中的 lib 目录或机器文件系统根目录中的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多