从Web应用程序访问时,Spring Persistence archive和entitymanager为null

时间:2012-03-24 23:47:29

标签: spring jpa spring-roo persistence.xml

我通过spring roo创建了一个jar文件(maven项目 - 持久存档)单元测试运行正常,相关文件位于以下位置

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应用程序。

我正在使用mvn jetty:run命令运行Web应用程序。 Web应用程序中的相关文件是。

webApp/WEB-INF/web.xml
webApp/WEB-INF/applicationContext.xml

问题 *它加载webapp / WEB-INF / applicationContext.xml但是如何验证它是否加载了子jarFile / META-INF / applicationContext.xml?实际上,当我尝试从持久性归档访问服务类方法时,entityManager为NULL。 *如果我尝试在web.xml中放置contextConfigLocation指令(尝试各种选项),它甚至不加载webapp / WEB-INF / applicationContext.xml。

我想要什么 使用来自我的Web应用程序中的持久性归档的服务方法(使用entitymanager)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

通过挖掘一下找到答案。 实际上我对包含上下文文件的各种方法/语法感到困惑,尝试使用各种类路径*: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文件加载上下文文件。事情正在发挥作用。