Java 实体管理器工厂名称已注册
我有一个服务器设置,它在运行时可以正常运行,但在启动过程中,我收到所有消息2次,并从Hibernate收到一条警告,说Java 实体管理器工厂名称已注册,java,spring,hibernate,cxf,Java,Spring,Hibernate,Cxf,我有一个服务器设置,它在运行时可以正常运行,但在启动过程中,我收到所有消息2次,并从Hibernate收到一条警告,说实体管理器工厂名称已注册。我正在使用Spring、Hibernate和CXF。我觉得我的设置应该与文档一致,但一定是我遗漏了什么。我发现了很多类似的例子,人们都指向SpringMVC,但我认为这不是我的问题 在my web.xml中,我有: <listener> <description>desc</description> &
实体管理器工厂名称已注册
。我正在使用Spring、Hibernate和CXF。我觉得我的设置应该与文档一致,但一定是我遗漏了什么。我发现了很多类似的例子,人们都指向SpringMVC,但我认为这不是我的问题
在my web.xml中,我有:
<listener>
<description>desc</description>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
描述
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
cxf
org.apache.cxf.transport.servlet.CXFServlet
1.
我在WEB-INF中有以下内容:
- applicationContext.xml,组件扫描到
java配置类和组件扫描@Configuration
@component
- cxfservlet.xml还带有组件扫描
更新1: 如果我从cxf-servlet.xml中删除组件扫描,那么问题似乎就消失了,但是它无法使用
@Inject
处理我的@Configurable
类。现在我对CXF和Spring如何激发Spring上下文感到更加困惑
更新2:
这与在CXFServlet和applicationContext中进行组件扫描有关。一切正常,但它在启动时加载了2次。尝试过滤掉用@Component注释的Hibernate pojo类/包,并尝试确保创建实体管理器bean的类/包也被过滤掉 在下面声明的情况下,默认情况下扫描带@Component注释的类
<context:component-scan base-package="com.abc.xyz" />
您的意思是我应该在哪里进行过滤?我有一个类(@Configuration
)创建实体管理器(LocalContainerEntityManagerFactoryBean
)。这应该被过滤掉吗?虽然不是很准确,但这个回答让我走上了正确的轨道