2

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

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

RouterWebProject 提供 servlet 信息,以便我可以向 servlet 发布 HTTP soap 请求,以路由到我在 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 文件,用于查找属性文件
  • Web 服务的 com/activant/web/services/iaptest/class 文件
  • META-INF/MANIFEST.MF(在类路径中有 AppSDKExamples.properties 和 AppSDKExamples_en_US.properties)
  • AppSDKExamples.properties
  • AppSDKExamples_en_US.properties

战争文件如下所示:

  • 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

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

4

1 回答 1

2

如果属性文件位于 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 平台规范中不清楚这是否应该引用libEAR 中的目录或机器文件系统根目录中的目录。

于 2012-05-10T16:24:38.740 回答