Jboss 7 getResourceAsStream()
Jboss 7 getResourcesAsStream()
应用结构说明:Ear应用,带ejb模块(.jar),jboss-seam(.jar)和war模块(.war)。
我有一个用 org.jboss.seam.annotations.Startup
注释的 StartupAction.class
(接缝组件)。在应用程序部署期间,我需要从 application.war 模块根目录 (application.war/pages/page.xhtml) 和 WEB-INF/classes
( application.war/WEB-INF/classes/file.properties)
Jboss 4.2
Thread.currentThread().getContextClassLoader().getResourceAsStream("file.properties")
将从 application.war/WEB-INF/classes/file.properties.
获取文件
Jboss 7.1.1
上面的代码不适用于 Jboss 7.
我知道 class 加载发生了变化,但我不知道如何进入 jboss 中的 application.war 7 .
这可以吗?有这样的例子吗?
提前致谢。
在 jboss7 中,每个子部署都有一个类加载器。
在您的情况下,Thread.currentThread().getContextClassLoader()
将 return 当前部署的类加载器。
要解决您的问题,您可以试试这个:
SomeRandomClassContainedInsideTheWAR.class.getClassLoader()
查看本指南以了解有关 JBoss7 ClassLoader 的更多信息
https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7
如@BalusC 所述,您将无法从 EAR 中打包的任何其他模块(EJB 或其他)读取嵌入 Web 模块中的属性文件。
这在 JBoss 4.x 中起作用的事实是它为更早的 JBoss 版本提供向后兼容性的结果。 JBoss 4.x 中需要额外的配置才能使用符合规范的 class 加载。 JBoss 7.x 和更新的使用规范兼容 class 默认加载。
如果您的属性文件包含部署后可访问的外部配置,那么您可以考虑 How to put an external file in the classpath 中描述的方法。
但是,如果它实际上是静态数据,那么您应该将属性文件打包到一个 jar 模块中,并将它放在您的 EAR 的 lib 目录中。
应用结构说明:Ear应用,带ejb模块(.jar),jboss-seam(.jar)和war模块(.war)。
我有一个用 org.jboss.seam.annotations.Startup
注释的 StartupAction.class
(接缝组件)。在应用程序部署期间,我需要从 application.war 模块根目录 (application.war/pages/page.xhtml) 和 WEB-INF/classes
( application.war/WEB-INF/classes/file.properties)
Jboss 4.2
Thread.currentThread().getContextClassLoader().getResourceAsStream("file.properties")
将从 application.war/WEB-INF/classes/file.properties. 获取文件
Jboss 7.1.1
上面的代码不适用于 Jboss 7.
我知道 class 加载发生了变化,但我不知道如何进入 jboss 中的 application.war 7 .
这可以吗?有这样的例子吗?
提前致谢。
在 jboss7 中,每个子部署都有一个类加载器。
在您的情况下,Thread.currentThread().getContextClassLoader()
将 return 当前部署的类加载器。
要解决您的问题,您可以试试这个:
SomeRandomClassContainedInsideTheWAR.class.getClassLoader()
查看本指南以了解有关 JBoss7 ClassLoader 的更多信息 https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7
如@BalusC 所述,您将无法从 EAR 中打包的任何其他模块(EJB 或其他)读取嵌入 Web 模块中的属性文件。
这在 JBoss 4.x 中起作用的事实是它为更早的 JBoss 版本提供向后兼容性的结果。 JBoss 4.x 中需要额外的配置才能使用符合规范的 class 加载。 JBoss 7.x 和更新的使用规范兼容 class 默认加载。
如果您的属性文件包含部署后可访问的外部配置,那么您可以考虑 How to put an external file in the classpath 中描述的方法。
但是,如果它实际上是静态数据,那么您应该将属性文件打包到一个 jar 模块中,并将它放在您的 EAR 的 lib 目录中。