Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实体管理器工厂名称已注册_Java_Spring_Hibernate_Cxf - Fatal编程技术网

Java 实体管理器工厂名称已注册

Java 实体管理器工厂名称已注册,java,spring,hibernate,cxf,Java,Spring,Hibernate,Cxf,我有一个服务器设置,它在运行时可以正常运行,但在启动过程中,我收到所有消息2次,并从Hibernate收到一条警告,说实体管理器工厂名称已注册。我正在使用Spring、Hibernate和CXF。我觉得我的设置应该与文档一致,但一定是我遗漏了什么。我发现了很多类似的例子,人们都指向SpringMVC,但我认为这不是我的问题 在my web.xml中,我有: <listener> <description>desc</description> &

我有一个服务器设置,它在运行时可以正常运行,但在启动过程中,我收到所有消息2次,并从Hibernate收到一条警告,说
实体管理器工厂名称已注册
。我正在使用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,组件扫描到
    @Configuration
    java配置类和组件扫描
    @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
)。这应该被过滤掉吗?虽然不是很准确,但这个回答让我走上了正确的轨道