properties - 如何使属性文件可供 WebSphere Application Server 8 中的 EJB 使用

标签 properties ejb websphere

我按照 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/class 文件
  • 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

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

最佳答案

如果属性文件位于 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 是否支持它们服务器。

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

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

关于properties - 如何使属性文件可供 WebSphere Application Server 8 中的 EJB 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525930/

相关文章:

java - 不离开的 EJB 异常

ssl - 如何使 "HTTPS redirect"在 WebSphere Application Server Liberty Profile 上运行?

java - 在 websphere 应用程序服务器 8.5.5 上运行 liferay portlet

java - "Local transaction already has 1 non-XA Resource: cannot add more resources"错误

Java EJB 接口(interface)

websphere - websphere中ext文件夹的使用

c# - MethodBase 作为哈希表键

c# - 在静态属性 getter 中创建的新对象是否只创建一次?

spring - 在运行时更新用@Value 注释的字段

javascript - 从 json 对象获取属性键