2010-11-02 4 views
1


J'ai suivi l'exemple du chapitre 14 du livre "Camel in Action". Je souhaite cacher le middleware par la logique métier. Tout en développant en utilisant « chameau: courir: », tout semblait fonctionner fichier de configuration assez well.The est ci-dessous:Problème ClasspathXMLApplicationContext dans 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> 

Puis est venu l'exigence de déployer à l'intérieur ServiceMix. J'ai suivi les guides de fusibles et suis venu à connaître les étapes qui sont nécessaires. Je avais besoin de changer le schéma de haricots à (je suppose)

<

<?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> 

Enfin, Pour utiliser le proxy dans le client, je fais:

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

Je reçois la erreur suivante, que je ne semble pas être en mesure de réparer. Je ne pense pas que je fais quelque chose de mal ici, s'il vous plaît aider. J'ai épuisé ma recherche, personne ne semble pouvoir répondre à cette question. Toute aide ici est appréciée. Mon karaf.framework = équinoxe et les faisceaux corrects ont été installés.

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

Est-ce que cette information est présente dans le journal ou y a-t-il plus, par ex. trace de la pile? Pouvez-vous activer la journalisation de débogage dans l'impression et placer le journal ici. – amra

+0

Mis à jour le poste avec stacktrace, c'est peut-être mieux maintenant? – smschauhan

+0

De manière surprenante, la même configuration peut être exécutée en utilisant les bonnes dépendances de camel-maven-plugin. Le but camel: run est capable de l'exécuter sans tracas. Je devine qu'il a quelque chose à avec ma déclaration du contexte: – smschauhan

Répondre

-1

Vous devriez pas changer l'espace de noms. L'espace de noms http://camel.apache.org/schema/osgi est @deprecated

Et vous devez pas utiliser utiliser Spring pour charger à nouveau le fichier XML.

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

Et que voulez-vous dire par client? Le client s'exécute-t-il à l'intérieur de l'ESB ou à partir d'un système autonome? Où le client fonctionne-t-il?

+0

S'excuser pour la mauvaise terminologie, le client ici est une source de données en continu. Il est hébergé au sein de l'ESB. Le client se connecte à une application hébergée en externe, récupère les données et les envoie dans l'ESB. – smschauhan

+0

Je suppose que je dois préciser qu'il y a deux dossiers de printemps à ce stade. Camel-context.xml contient les définitions d'itinéraire. Camel-client.xml est constitué de la définition du proxy. J'ai séparé les deux afin que je ne redémarre pas les routes à nouveau. – smschauhan

+1

Mon application fonctionne très bien avec camel: run. Je suppose que je suis à la recherche des bonnes étapes pour que je puisse l'héberger en servicemix. J'ai été incapable de trouver un guide concis pour le même. S'il te plait, oriente moi dans la bonne direction. – smschauhan