Eri*_* B. 4 java ear war pom.xml maven
这种需求可能听起来有点复杂,如果是这样,那么我愿意接受关于实施最佳实践的建议.我的问题如下.我有一个WAR webapp,它包含在EAR中.一切都是青春的.从我的webapp中,我试图显示耳朵和战争的神器ID和版本号.
战争是一个相当容易处理的案件.我可以使用简单的maven过滤在构建战争时将必要的artifactId/versionId注入到战争中.然而,耳朵更复杂.
我知道有一个META-INF/maven /// pom.properties,我可以在耳边看到包含该信息,但我看不到它.
我已经尝试(从jsp页面内)以下内容但没有成功(所有有和没有前导/); 所有调用都返回null:
getClass().getClassLoader().getResource( "/META-INF/maven/<group>/<artifact>/pom.properties");
getClass().getClassLoader().getResourceAsStream( "/META-INF/maven/<group>/<artifact>/pom.properties");
Run Code Online (Sandbox Code Playgroud)
这甚至可以使用类加载器吗?或者是类加载器配置依赖吗?有没有更好的方法来获取此信息?
我目前正在JBoss上运行测试,但最终的部署将在WebSphere上进行.但是,理想情况下,我想要一个不依赖于服务器的解决方案.
谢谢!
埃里克
我不相信这是可能的,因为EAR,EJB和WAR具有不同的类加载器,根据通用的,可预测的和Java EE范围的方案,它们没有必要相互链接.
最近,我遇到了类似的问题,我发现的唯一可接受的解决方案,被指定env-entry的application.xml,并通过@Resource注入阅读它:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<!-- usual stuff goes here -->
<env-entry>
<description>application-wide property</description>
<env-entry-name>java:app/env/AppWideProperty</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>stackoverflow.com</env-entry-value>
</env-entry>
</application>
Run Code Online (Sandbox Code Playgroud)
以及后来的任何课程:
public class CalcResultCachePool {
@Resource(lookup="java:app/env/AppWideProperty")
String appWideProperty;
//
//
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |