我正在尝试使用tomcat 6.0.32,cxf 2.4.1来设置一个简单的restful web应用程序。每当我发出任何调用时,我都会得到一个异常“没有定义名为' cxf‘的bean”,其中cxf是我的总线。
查看应用程序日志,我可以看到cxf实例已创建并缓存。
================应用程序日志BEGIN======================
910调试-创建单例bean 'cxf‘的共享实例
910调试-创建bean 'cxf‘的实例
1018调试-急切地缓存bean 'cxf‘以允许解析潜在的循环引用
1031调试-返回尚未完全初始化的单个bean 'cxf‘的急切缓存实例-循环引用的结果
1034调试-已完成创建bean 'cxf‘的实例
1035调试-返回单例bean 'org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor‘的缓存实例
1035调试-返回单例bean 'org.apache.cxf.bus.spring.Jsr250BeanPostProcessor‘的缓存实例
1035调试-返回单例bean 'org.apache.cxf.bus.spring.BusExtensionPostProcessor‘的缓存实例
1035调试-创建单例bean 'connection‘的共享实例
1035调试-创建bean 'connection‘的实例
1035调试-急切地缓存bean 'connection‘以允许解析潜在的循环引用
1052调试-已完成创建bean 'connection‘的实例
1052调试-创建单例bean 'connectionService‘的共享实例
1052调试-创建bean 'connectionService‘的实例
1053调试-急切地缓存bean 'connectionService‘以允许解析潜在的循环引用
1053调试-返回单例bean 'connection‘的缓存实例
1053调试-返回单个bean 'cxf‘的缓存实例
1121调试-正在名为“connectionService”的bean上调用初始化方法“create”
1356调试-已完成创建bean 'connectionService‘的实例
1384使用默认org.springframework.context.support.DefaultLifecycleProcessor@45d1c3cd调试名为‘lifecycleProcessor’的fecycleProcessor
1385调试-返回单一实例bean 'lifecycleProcessor‘的缓存实例
1387调试-返回单个bean 'cxf‘的缓存实例
1387调试-返回单个bean 'cxf‘的缓存实例
1388调试-正在名为“connectionService”的bean上调用初始化方法“create”
1391调试-已完成创建bean 'connectionService‘的实例
1391调试-无法找到名为‘LifecycleProcessor’的lifecycleProcessor:使用默认org.springframework.context.support.DefaultLifecycleProcessor@2c3299f6
1391调试-返回单一实例bean 'lifecycleProcessor‘的缓存实例
1391调试-已将根WebApplicationContext发布为名为org.springframework.web.context.WebApplicationContext.ROOT的ServletContext属性
1391信息-根WebApplicationContext:初始化在1390毫秒内完成
================应用程序日志END======================
但是当一个请求进入时,它总是失败,说它找不到bean。
===================== Tomcat (本地主机)日志开始==================
信息:初始化Spring根WebApplicationContext
2011年7月14日上午8:57:03 org.apache.catalina.core.ApplicationContext日志
严重: StandardWrapper.Throwable
org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为'cxf‘的bean
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1079)
at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:58)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:54)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
at java.lang.Thread.run(Thread.java:662)===================== Tomcat (本地主机)日志结束==================
我能想到的唯一一件事是,bean被插入到一个上下文中,并从另一个上下文中检索,但无法验证或找到绕过它的方法。任何帮助都将不胜感激。
发布于 2012-02-15 18:37:26
从您的错误日志中,我假设您使用Spring,如果是这样,您将需要向Spring上下文XML添加以下行:
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-xml.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>希望这能有所帮助。
发布于 2015-09-14 18:29:47
如果有人需要基于Spring Java的配置来解决这个问题,有两个选择:
您可以使用以下命令将cxf.xml文件导入到Java Config类中:
@ImportResource({ "classpath:META-INF/cxf/cxf.xml" })或者,您可以使用以下命令在Java配置类中以编程方式定义bean:
@Bean
public SpringBus cxf() {
return new SpringBus();
}CXF + Spring Java配置类example。
发布于 2014-03-06 01:45:03
以防其他人来这里使用mulesoft esb。这个问题也存在于这个系统中。要解决此问题,请在流的定义之前添加以下部分。
<spring:beans>
<spring:import resource="classpath:META-INF/cxf/cxf.xml" />
<spring:import resource="classpath:META-INF/cxf/cxf-extension-xml.xml" />
<spring:import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<spring:bean class="org.apache.cxf.bus.spring.Jsr250BeanPostProcessor" />
<spring:bean id="classname" name="classname" class="some.implemented.interface.path" />
</spring:beans>https://stackoverflow.com/questions/6696785
复制相似问题