gpt4 book ai didi

java - JBoss 6.2 上 Web 应用程序的 .ear 文件中 Java 存档的类路径

转载 作者:行者123 更新时间:2023-11-30 07:09:15 27 4
gpt4 key购买 nike

背景

在 JBoss 上运行 J2EE 应用程序。内容存储库包含:

  • WebApp.war
  • ReportService.ear
  • 其他 .jar 文件

ReportService.ear文件包含:

/ReportService-ejb.jar
/lib/*.jar

ReportService-ejb.jar包含:

/META-INF/reports/Report.jasper
/META-INF/reports/Subreport.jasper

环境

  • Java 1.7
  • NetBeans 8.0.2
  • JBoss 6.2.0 正式版

问题

以下路径必须位于 CLASSPATH 中,以便当 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"

问题是,当报告服务尝试读取该文件时,会出现以下错误,这是一条自定义错误消息,仅在 getResource 时才会发生。找不到文件:

java.io.IOException: Missing resource path: '/META-INF/reports/Report.jasper'.

针对部署(通过 RMI)运行报表服务单元测试时,报表运行成功。这可能是因为 NetBeans 正在提供报告模板文件(即 /META-INF/reports/*.jasper 文件)的本地副本。

其他详细信息

关于网络应用程序:

  • MANIFEST.MF由 NetBeans 使用 project.properties 自动生成目前不包含Class-Path条目。
  • jboss-app.xml文件仅包含<jboss-app/> .
  • jboss-web.xml文件包含上下文根、安全域和其他配置项。
  • application.xml不存在。

WebApp.war文件也可以捆绑并部署在 WebApp.ear 内.

问题

必须使用 CLASSPATH 更新哪些文件,以便 Web 应用程序可以使用报表服务成功查找 /META-INF/ 中的文件。 ReportService.jar的目录,嵌套在 ReportService.ear 中?

注意:构建过程(通过 build.xml 和 build-impl.xml)会覆盖 MANIFEST.MF每次WebApp.war已建成。

想法

  • 更新构建脚本。更改 build-impl.xml 以更新 WebApp.war 的 list ,以设置 Class-Path引用 ReportServices.jar 的条目。如果 .jar 文件位于 ReportService.ear 文件内,它将如何找到它?

  • 更新 Web 应用程序 EAR list 。更改MANIFEST.MF里面WebApp.ear包括 Class-Path:条目。

资源

最佳答案

更改:

Thread.currentThread().getContextClassLoader().getResource(filename)

至:

getClass().getResource(filename)

关于java - JBoss 6.2 上 Web 应用程序的 .ear 文件中 Java 存档的类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com