2010-11-02 3 views
1


Я следовал примеру в главе 14 книги «Верблюд в действии». Я хочу скрыть промежуточное ПО от бизнес-логики. При разработке с использованием «верблюд: бежать:» все, казалось, работало довольно well.The конфигурационный файл ниже:ClasspathXMLApplicationContext проблема в apache-servicemix-4.3.0-fuse-00-00

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:camel="http://camel.apache.org/schema/spring" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
"> 
     <!-- camel activemq component to connect to the broker --> 
     <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> 
      <property name="brokerURL" value="tcp://localhost:61616" /> 
     </bean> 

     <!-- the camel client --> 
     <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> 
      <proxy id="StreamProxy" serviceInterface="ird.StockStream.StreamService" 
        serviceUrl="activemq:queue:queueStream" /> 
     </camel:camelContext> 

</beans> 

Потом по требованию его развертывания внутри ServiceMix. Я последовал инструкциям плавких предохранителей и узнал о необходимых шагах. Мне нужно изменить схему боба к (я предполагаю, что)

<

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:osgi="http://camel.apache.org/schema/osgi" 
     xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" 
     xmlns:ctx="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
     http://camel.apache.org/schema/osgi http://camel.apache.org/schema/osgi/camel-osgi.xsd 
     http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
"> 
     <!-- camel activemq component to connect to the broker --> 
     <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> 
      <property name="brokerURL" value="tcp://localhost:61616" /> 
     </bean> 

     <!-- the camel client --> 
     <osgi:camelContext xmlns="http://camel.apache.org/schema/spring"> 
      <proxy id="StreamProxy" serviceInterface="ird.StockStream.StreamService" 
        serviceUrl="activemq:queue:queueStream" /> 
     </osgi:camelContext> 

</beans> 

Наконец, для того, чтобы использовать прокси в клиенте, я:

AbstractXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
           "classpath:META-INF/spring/camel-client.xml"); 
        streamService=(StreamService) ctx.getBean("StreamProxy"); 

Я получаю следующая ошибка, которую я, похоже, не могу исправить. Я не думаю, что я делаю что-то неправильно здесь, пожалуйста, помогите. Я исчерпал свой поиск, никто, кажется, не может ответить на этот вопрос. Любая помощь здесь ценится. Мой karaf.framework = равноденствие и правильные связки были установлены.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activemq' defined in class path resource [META-INF/spring/camel-client.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'camelContext': FactoryBean threw exception on object creation; nested ex 
lPointerException 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
     at org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:161) 
     at org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:51) 
     at ird.StockStream.StreamClient.initProperties(StreamClient.java:83) 
     at ird.StockStream.StreamClient.<init>(StreamClient.java:67) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126) 
     at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:71) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:948) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:901) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
     at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69) 
     at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355) 
     at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) 
     at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320) 
     at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'camelContext': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149) 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1414) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:245) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075) 
     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:95) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1405) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075) 
     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:95) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1405) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     ... 34 more 
Caused by: java.lang.NullPointerException 
     at org.apache.camel.core.osgi.OsgiPackageScanClassResolver.<init>(OsgiPackageScanClassResolver.java:39) 
     at org.apache.camel.core.osgi.OsgiCamelContextHelper.osgiUpdate(OsgiCamelContextHelper.java:45) 
     at org.apache.camel.osgi.OsgiSpringCamelContext.<init>(OsgiSpringCamelContext.java:34) 
     at org.apache.camel.osgi.CamelContextFactoryBean.newCamelContext(CamelContextFactoryBean.java:50) 
     at org.apache.camel.spring.CamelContextFactoryBean.createContext(CamelContextFactoryBean.java:279) 
     at org.apache.camel.spring.CamelContextFactoryBean.getContext(CamelContextFactoryBean.java:290) 
     at org.apache.camel.spring.CamelContextFactoryBean.getContext(CamelContextFactoryBean.java:79) 
     at org.apache.camel.core.xml.AbstractCamelContextFactoryBean.getContext(AbstractCamelContextFactoryBean.java:594) 
     at org.apache.camel.core.xml.AbstractCamelContextFactoryBean.getObject(AbstractCamelContextFactoryBean.java:108) 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) 
     ... 53 more 
+0

Только эта информация присутствует в журнале или есть еще, например. трассировки стека? Вы можете включить ведение журнала отладки в печати и разместить здесь журнал. – amra

+0

Обновлено сообщение с помощью stacktrace, может быть, теперь лучше? – smschauhan

+0

Удивительно, что та же конфигурация может быть выполнена с использованием правильных зависимостей с помощью верблюжье-maven-плагина. Цель верблюда: бег способен выполнить это без хлопот. Я предполагаю, что у него есть что-то с моим объявлением контекста: – smschauhan

ответ

-1

Вы должны не изменить пространство имен. Пространство имен http://camel.apache.org/schema/osgi является @deprecated

И вы должны не использовать Весна для загрузки XML-файла снова.

AbstractXmlApplicationContext ctx = new ClassPathXmlApplicationContext ( "classpath: META-INF/spring/camel-client.xml");

И что вы подразумеваете под клиента? Клиент работает внутри ESB или автономно. Где работает клиент?

+0

Извините за неправильную терминологию, клиент здесь является потоковым источником данных. Он размещен в ESB. Клиент подключается к внешнему размещенному приложению, извлекает данные и накачивает его в ESB. – smschauhan

+0

Я предполагаю, что мне нужно уточнить, что на этом этапе есть два файла весны. Camel-context.xml содержит определения маршрутов. Camel-client.xml состоит из определения прокси. Я отделил два, чтобы снова не перезапустить маршруты. – smschauhan

+1

Мое приложение работает абсолютно отлично с помощью верблюда: бег. Наверное, я ищу правильные шаги, чтобы я мог разместить это в servicemix. Я не смог найти краткое руководство для него. Пожалуйста, укажите мне в правильном направлении. – smschauhan

Смежные вопросы