Spring 用于CXF的OpenEntityManagerViewInterceptor
我有一个基于JPA(Hibernate)、Spring和CXF的Web服务应用程序。 在事务性业务方法之后,我面临一些延迟加载异常(因为我需要在Rpresentation层中呈现一些额外的bean),我想尝试一下OpenSession/EntityManagerView模式 请不要争辩这个选择,我们只是尝试一下 问题是,由于我使用的是CXFServlet,而不是标准的Spring Servlet,因此我无法在web.xml中使用OpenEntityManagerInViewFilter 我不能使用OpenEntityManagerViewInterceptor,它可以作为WebRequest拦截器使用(不适用于CXF拦截器/过滤器) 最后,我知道了一个AOP代理,它将任何方法包装到会话中。但是:这是针对Hibernate API的,而不是JPA API(我使用的是EntityManagerFactory,而不是SessionFactory) 那么,您是否知道: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 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油漆接受器