2016-03-08 29 views
1

我試圖添加CdiCamelContext來啓動路由器,如下所示。無法在CamelContext上調用public void org.apache.camel.cdi.CdiCamelContext.start()

@Inject 
@ContextName("new-camelContext") 
CdiCamelContext camelContext; 

@PostConstruct 
public void init() throws Exception { 
    camelContext.addRoutes(new MyRoute()); 
    camelContext.start(); 
} 

堆棧跟蹤:當構建項目發生

錯誤。 org.jboss.weld.exceptions.WeldException:WELD-000049:無法在org.jboss.weld.injection.producer上的CamelContext(camel-4)上調用public void org.apache.camel.cdi.CdiCamelContext.start() .DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:100)at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:81)at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java :126)org.apache.camel.cdi.internal.CamelContextBean.create(CamelContextBean.java:73)at org.apache.camel.cdi.internal.CamelContextBean.create(CamelContextBean.java:40)at org.jboss。 (org.jboss.weld.bean.ContextualInstanceStrategy)中的weld.context.AbstractContext.get(AbstractContext.java:96)$ org.jboss.weld.bean.ContextualInstance.get(ContextualInstance。)上的$ DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)。 java:50)在org.jboss.weld.bean.pro xy.ContextBeanInstance.getInstance(ContextBeanInstance.java:99)at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:125)at org.apache.camel.cdi.CdiCamelContext $ Proxy $ _ $$ _ WeldClientProxy .getStatus(來源不明)在org.apache.camel.cdi.CdiCamelExtension.createCamelContexts(CdiCamelExtension.java:261)在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:497)at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java :88)在org.jboss.weld.injection.MethodInvocationStrategy $ SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144)在org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:306)在org.jboss.weld。 event.ExtensionObserverMethodImpl.sendEvent(Extensi onObserverMethodImpl.java:121)在org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:284)在org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:262)在org.jboss.weld .event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:271)在org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:260)在org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:154 org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:148 at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:54)at org.jboss.weld.bootstrap.events。 AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)在org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)在org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:447) org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)at org.jboss.as.w eld.WeldStartService.start(WeldStartService.java:94)at org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1948)at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl。 java:1881)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread .java:745) 由sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl上的sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)引發:java.lang.reflect.InvocationTargetException。調用(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:497)在org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:98)... 36更多由org.apache.camel.Runtime引起CamelException:javax.enterprise.inject.InjectionException:處理[InjectionTarget for Managed Bean [帶有限定符[@Default @Named @Any]]的[org.apache.camel.cdi.component.properties.CdiPropertiesComponent]失敗的駱駝註釋失敗!在org.apache.camel.util.ObjectHelper。在org.apache的org.apache.camel.util.CamelContextHelper.lookupPropertiesComponent(CamelContextHelper.java:575)處的org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookupByName(PropertyPlaceholderDelegateRegistry.java:52)處的wrapRuntimeCamelException(ObjectHelper.java:1642) .camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2966)at org.apache.camel.impl.DefaultCamelContext.access $ 000(DefaultCamelContext.java:175)at org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext .java:2812)at org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext.java:2808)at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2831)at org.apache.camel .impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2808)at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2777 )在org.apache.camel.cdi.CdiCamelContext.start(CdiCa melContext.java:76)

我需要找到一個合適的方式如何在不同的項目中使用駱駝cdi和訪問相同的駱駝上下文。

回答

0

@coolD,我也有同樣的問題,並找到一種方法來處理這個問題。我使用了駱駝CDI的Apache Camel 2.16.2。我在其他stackOverFlow問題中添加了我的答案。 How to use same CamelContext in multiple jar on the same war看一看。這可能有幫助。

ps。有一隻駱駝2.17.0已經被釋放出來。我還沒有試過。

+0

謝謝kds .... – coolD

相關問題