【问题标题】:Context Initialization Failure -- BeanCreationNotAllowedException上下文初始化失败——BeanCreationNotAllowedException
【发布时间】:2011-09-21 01:10:35
【问题描述】:

我的应用程序的 Spring 上下文无法初始化。谁能帮我理解它为什么失败以及如何解决它?

以下是我收到的警告和错误消息:

[WARN] 在 bean 上调用销毁方法 'shutdown' 失败 名称'cxf'

org.springframework.beans.factory.BeanCreationNotAllowedException: 创建名为“entityManagerFactory”的bean时出错:Singleton bean 当这个工厂的单身人士在时,不允许创建 销毁(不要在销毁时从 BeanFactory 请求 bean 方法实现!)

org.springframework.web.context.ContextLoader [错误] 上下文初始化失败

<bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl" destroy-method="shutdown"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       <property name="persistenceUnitName" value="${persistence.unit}"/>
       <property name="dataSource" ref="pooledDs"/>
       <property name="jpaVendorAdapter">
           <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
               <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
               <property name="showSql" value="false"/>
               <property name="generateDdl" value="false"/>
           </bean>
       </property>    
</bean> 

【问题讨论】:

  • 你能发布你的xml配置吗?或者,如果您使用的是 Annotation 配置,请发布由名称“cfx”和“entityManagerFactory”标识的类。
  • 是否有任何错误导致此警告?
  • @AaronSheffey:不,没有导致警告的错误。

标签: java spring dependency-injection cxf


【解决方案1】:

CXF 网站在其示例配置中不包含 destroy-method 调用,因此这似乎是一个错误配置。详情见本页:http://cxf.apache.org/docs/interceptors.html

我还为此问题找到了一个错误跟踪器:https://issues.apache.org/jira/browse/CXF-2164。似乎在早期版本的 CXF 中没有隐式调用 destroy 方法,但在 v2.2.11 中已修复。

因此,我的建议是至少升级到该版本,并在您的配置中添加 &lt;bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl" /&gt;

【讨论】:

  • 我从版本 2.3.2 升级到 2.4.2 并解决了这个问题。谢谢。
  • @kin1 因此,请发布您的解决方案作为答案并接受它。通过这种方式,人们会立即看到问题已经解决,不再需要解决方案。 ;)
【解决方案2】:

在我的情况下,我在 2.5.0 版中遇到了同样的问题,但这是我的错。

我在上下文中有错误的 bean。

详细说明:我使用 @Controller 注释的 Spring MVC 控制器(名为 OrderController)没有定义名称(注释驱动)。另一方面,CXF 需要 xml 配置 AFAIK,所以我使用 java 配置(使用 @Bean)将 bean 命名为 orderController,并且在初始化 cxf 时,Spring 使用了这个错误的 MVC 控制器,它在上面列出的错误中失败了。

org.springframework.beans.factory.BeanCreationNotAllowedException:创建名为“cxf”的bean时出错:当该工厂的单例处于销毁状态时,不允许创建单例bean(不要在销毁方法实现中从BeanFactory请求bean !)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 2014-09-13
    • 2015-09-09
    • 2011-11-23
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多