jakarta内Java归档的ee类路径。JBoss 6.2上web应用程序的ear文件
背景
在JBoss上运行J2EE应用程序。内容存储库包含:
- 网络应用。战争
- 报告服务。耳朵
- 额外的。jar文件
ReportService.ear
文件包含:
/ReportService-ejb.jar
/lib/*.jar
{
/META-INF/reports/Report.jasper
/META-INF/reports/Subreport.jasper
环境
- Java 1.7
- NetBeans 8.0.2
- JBoss 6.2.0 GA
问题
以下路径必须位于类路径上,以便在Web应用程序运行时,报表服务可以找到META-INF
目录的根目录:
ReportService.ear >> ReportService-ejb.jar >> /META-INF/.
也就是说,Thread.currentThread().getContextClassLoader().getResource(filename)
必须能够在以下情况下读取文件/META-INF/reports/Report.jasper
:
filename = "/META-INF/reports/Report.jasper"
问题在于,当reporting service尝试读取该文件时,会出现以下错误,这是一条自定义错误消息,仅当getResource
无法找到该文件时才会发生:
java.io.IOException: Missing resource path: '/META-INF/reports/Report.jasper'.
在针对部署(通过RMI)运行报表服务单元测试时,报表会成功运行。这可能是因为NetBeans使报表模板文件(即/META-INF/reports/*.jasper
文件)的本地副本可用
其他细节
关于Web应用程序:
MANIFEST.MF
由NetBeans使用project.properties
自动生成,当前不包含Class-Path
项李>jboss-app.xml
文件只包含<jboss-app/>
李>jboss-web.xml
文件包含上下文根、安全域和其他配置项李>application.xml
不存在李>
WebApp.war
文件也可以捆绑并部署在WebApp.ear
中
问题:
必须使用类路径更新哪个文件,以便Web应用程序可以使用报表服务在嵌套在ReportService.ear
中的/META-INF/
目录中成功查找文件
注意:构建过程(通过build.xml和build impl.xml)会在每次构建WebApp.war
时覆盖MANIFEST.MF
想法
更新生成脚本更改构建impl。xml来更新WebApp的清单。war设置引用ReportServices的
Class-Path
项。罐子它将如何找到这个问题。jar文件(如果它在ReportService中)。耳锉更新Web应用程序EAR清单。将
MANIFEST.MF
内的WebApp.ear
更改为包含Class-Path:
项
# 1 楼答案
改变:
致: