2016-03-08 77 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