我已经通过spring-roo(maven项目-持久性归档)创建了一个jar文件。单元测试运行良好,相关文件位于以下位置
jarFile/META-INF/persistence.xml
jarFile/META-INF/applicationContext.xml
jarFile/META-INF/applicationContext-jpa.xml
jarFile/META-INF/database.properties
单元测试运行良好。
因为这是一个maven项目,我通过执行命令"mvn-install"将其添加到本地存储库中,然后将其作为依赖项添加到另一个基于maven的web应用程序中。
我正在使用mvnjetty:run命令运行web应用程序。web应用程序中涉及的文件有。
webApp/WEB-INF/web.xml
webApp/WEB-INF/applicationContext.xml
问题*它正在加载webapp/WEB-INF/applicationContext.xml,但我如何验证它是否正在加载子jarFile/META-INF/aapplicationContext.xml?实际上,当我尝试从持久性归档访问服务类方法时,entityManager为NULL。*如果我尝试将contextConfigLocation指令(尝试了各种选项)放在web.xml中,它甚至不会加载webapp/web-INF/applicationContext.xml。
我想要什么使用web应用程序中持久性归档中的服务方法(使用entitymanager)。
提前谢谢。
通过挖掘找到了答案。事实上,我对包括上下文文件的各种方法/语法感到困惑,我正在尝试使用所有类型的classpath*:xxx语法,但实际上WEB-INF不在类路径上,因此必须将以下内容添加到WEB.xml以加载主webApp/WEB-INF/applicationContext.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
然后必须将以下内容添加到webApp/WEB-INF/applicationContext.xml
<import resource="classpath*:META-INF/spring/applicationContext*.xml" />
现在web应用程序也正在从jar文件加载上下文文件。一切都在起作用。