Spring 用于CXF的OpenEntityManagerViewInterceptor

Spring 用于CXF的OpenEntityManagerViewInterceptor,spring,hibernate,jpa,transactions,cxf,Spring,Hibernate,Jpa,Transactions,Cxf,我有一个基于JPA(Hibernate)、Spring和CXF的Web服务应用程序。 在事务性业务方法之后,我面临一些延迟加载异常(因为我需要在Rpresentation层中呈现一些额外的bean),我想尝试一下OpenSession/EntityManagerView模式 请不要争辩这个选择,我们只是尝试一下 问题是,由于我使用的是CXFServlet,而不是标准的Spring Servlet,因此我无法在web.xml中使用OpenEntityManagerInViewFilter 我不能使

我有一个基于JPA(Hibernate)、SpringCXF的Web服务应用程序。 在事务性业务方法之后,我面临一些延迟加载异常(因为我需要在Rpresentation层中呈现一些额外的bean),我想尝试一下OpenSession/EntityManagerView模式

请不要争辩这个选择,我们只是尝试一下

问题是,由于我使用的是CXFServlet,而不是标准的Spring Servlet,因此我无法在web.xml中使用OpenEntityManagerInViewFilter

我不能使用OpenEntityManagerViewInterceptor,它可以作为WebRequest拦截器使用(不适用于CXF拦截器/过滤器)

最后,我知道了一个AOP代理,它将任何方法包装到会话中。但是:这是针对Hibernate API的,而不是JPA API(我使用的是EntityManagerFactory,而不是SessionFactory

那么,您是否知道:

  • JPA API(EntityManagerInterceptor?)的HibernateInterceptor
  • 将SpringWebRequestInterceptor调整为的方法
  • 还有其他解决办法吗

提前感谢您的帮助。

再一次,我终于找到了我想要的。。。 事实上,有一种方法可以满足我的需求(尽管它看起来不太受欢迎,但我真的不明白为什么)

下面是一个类似于符咒的结果配置,带有一点自动代理的名称:

   <bean id="jpaInterceptor" class="org.springframework.orm.jpa.JpaInterceptor"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
   </bean> 

   <bean id="jpaAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" >
    <property name="beanNames">
      <list>
        <value>myService1</value>
        <value>myService2</value>
        <value>...</value>
      </list>
    </property>
    <property name="interceptorNames">
       <list><value>jpaInterceptor</value></list>
    </property>
  </bean>

<jaxrs:server id="services" address="/">

    <jaxrs:serviceBeans>
        <ref bean="myService1" />
        <ref bean="myService2" />
        <ref bean="..." />

    </jaxrs:serviceBeans>
</jaxrs:server>

我的服务1
我的服务2
...
J油漆接受器