如何在WebSphere Application Server 8中为EJB提供属性文件

时间:2012-05-10 00:18:26

标签: properties ejb websphere

我通过遵循Rational Application Developer for WebSphere 8.0.4帮助中的Tutorial,从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 /类文件,用于查找属性文件
  • 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(Class-Path:/ 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中

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

1 个答案:

答案 0 :(得分: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 Class-Path中引用属性文件也不起作用,因为只支持JAR和目录(参见上面有关目录的JavaEE警告)。

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