Бин с именем 'cxf' не определен - PullRequest
9 голосов
/ 14 июля 2011

Я пытаюсь настроить простое спокойное веб-приложение, используя tomcat 6.0.32, cxf 2.4.1. Каждый раз, когда я выполняю любой вызов, я получаю исключение «Бин с именем« cxf »не определен», где cxf - моя шина.

Глядя на журнал приложения, я вижу, что экземпляр cxf создан и кэширован.

================ ПРИЛОЖЕНИЕ ЖУРНАЛА ПРИЛОЖЕНИЯ ======================

910 DEBUG - Создание общего экземпляра одноэлементного компонента 'cxf'

910 DEBUG - Создание экземпляра компонента 'cxf'

1018 DEBUG - Готовый кеширующий бин 'cxf' для разрешения потенциальных циклических ссылок

1031 DEBUG - Возврат кешированного экземпляра синглтон-компонента 'cxf', который еще не полностью инициализирован - следствие циклической ссылки

1034 DEBUG - Завершено создание экземпляра bean-компонента 'cxf'

1035 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor'

1035 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'org.apache.cxf.bus.spring.Jsr250BeanPostProcessor'

1035 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'org.apache.cxf.bus.spring.BusExtensionPostProcessor'

1035 DEBUG - Создание общего экземпляра единственного компонента 'connection'

1035 DEBUG - Создание экземпляра bean-компонента 'connection'

1035 DEBUG - Кэширующее 'bean-соединение' для быстрого разрешения потенциальных циклических ссылок

1052 DEBUG - Завершено создание экземпляра bean-компонента 'connection'

1052 DEBUG - Создание общего экземпляра одиночного компонента 'connectionService'

1052 DEBUG - Создание экземпляра компонента 'connectionService'

1053 DEBUG - Кэширующий EJB компонент «ConnectionService» для разрешения потенциальных циклических ссылок

1053 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'connection'

1053 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'cxf'

1121 DEBUG - Вызывает метод инициализации 'create' для бина с именем 'connectionService'

1356 DEBUG - Завершено создание экземпляра компонента 'connectionService'

1384 DEBUG fecycleProcessor с именем 'lifecycleProcessor': используется по умолчанию [org.springframework.context.support.DefaultLifecycleProcessor@45d1c3cd]

1385 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'lifecycleProcessor'

1387 DEBUG - Возвращение кэшированного экземпляра синглтон-компонента 'cxf'

1387 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'cxf'

1388 DEBUG - Вызывает метод инициализации 'create' для бина с именем 'connectionService'

1391 DEBUG - Завершено создание экземпляра компонента 'connectionService'

1391 DEBUG - Невозможно найти LifecycleProcessor с именем 'lifecycleProcessor': используется значение по умолчанию [org.springframework.context.support.DefaultLifecycleProcessor@2c3299f6]

1391 DEBUG - Возвращение кэшированного экземпляра одноэлементного компонента 'lifecycleProcessor'

1391 DEBUG - опубликованный корневой WebApplicationContext в виде атрибута ServletContext с именем [org.springframework.web.context.WebApplicationContext.ROOT]

1391 INFO - Root WebApplicationContext: инициализация завершена за 1390 мс

================ КОНЕЦ ЛОГА ПРИЛОЖЕНИЯ =====================

Но когда приходит запрос, он всегда терпит неудачу, говоря, что не может найти компонент.

===================== Tomcat (localhost) Начало журнала =================

ИНФОРМАЦИЯ: Инициализация корневого элемента Spring WebApplicationContext

14 июля 2011 г. 8:57:03 AM org.apache.catalina.core.ApplicationContext log

SEVERE: StandardWrapper. Throwable

org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен боб с именем 'cxf'

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 (localhost) =================

Единственное, о чем я могу думать, это то, что бин вставляется в один контекст и извлекается из другого, но не может это проверить или найти способ обойти это.Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

22 голосов
/ 15 февраля 2012

Из вашего журнала ошибок я предполагаю, что вы используете Spring, если это так, вам нужно добавить следующие строки в XML-контекст Spring:

<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"/>

Надеюсь, это поможет.

5 голосов
/ 14 сентября 2015

Если кому-то нужна конфигурация Spring Java Based для решения этой проблемы, есть два варианта:

Вы можете импортировать файл cxf.xml в класс Java Config с помощью:

@ImportResource({ "classpath:META-INF/cxf/cxf.xml" })

Или вы можете определить bean-компонент программно в своем классе Java-конфигурации с помощью:

@Bean
public SpringBus cxf() {        
    return new SpringBus();
}

CXF + Spring Java Configuration class пример .

1 голос
/ 05 марта 2014

На случай, если кто-нибудь еще зайдет сюда и использует 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>
0 голосов
/ 08 октября 2016

Пожалуйста, проверьте эти шаги ниже:

1) строки, упомянутые ниже, должны быть включены в ваш Spring Context XML:

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

2) Web.xml должен быть настроен следующим образом:

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath*:cxf.xml</param-value>
</context-param>

3) Зависимости ниже должны быть добавлены в ваш pom.xml:

<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-security</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-policy</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-service-description</artifactId>
        <version>${cxf.version}</version>
    </dependency>

Если все это не помогло вам решить вашу проблему, последний шаг - проверка вашей конфигурации weblogic, вот шаги, которые вы должны проверить на своем сервере weblogic:

  1. убедитесь, что вы указали компьютер для вашего сервера.
  2. вам необходимо указать сервер и машину для развертывания, как показано ниже:

Развертывание приложения Weblogic

Надеюсь, проверив все эти шаги, ваша проблема будет решена.

Приветствия

0 голосов
/ 15 июня 2015

Добавьте эти зависимости в файл pom:

<dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-rs-extension-search</artifactId>
   <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-extension-providers</artifactId>
    <version>3.0.1</version>
</dependency>
...