【发布时间】:2016-03-08 09:52:52
【问题描述】:
我正在尝试添加 CdiCamelContext 来启动路由器,如下所示。
@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:40) 在 org.jboss.weld 的 org.apache.camel.cdi.internal.CamelContextBean.create(CamelContextBean.java:73) .context.AbstractContext.get(AbstractContext.java:96) at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101) at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java :50) 在 org.jboss.weld.bean.proxy.ContextBeanInstance.getInstanc e(ContextBeanInstance.java:99) at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:125) at org.apache.camel.cdi.CdiCamelContext$Proxy$_$$_WeldClientProxy.getStatus(Unknown来源)在 org.apache.camel.cdi.CdiCamelExtension.createCamelContexts(CdiCamelExtension.java:261) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:88) at org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144) 在 org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:306) 在 org.jboss.weld.event.ExtensionObserverMethodImpl。发送事件(ExtensionObserverMethodImpl.java:121)在org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:284) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:262) at 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.WeldStartup.validateBeans(WeldStartup.java:447) 在 org.jboss.weld 的 org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)。 bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90) 在 org.jboss.as.weld.WeldStartService.start(WeldSt artService.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) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 原因:在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:62) 的 java.lang.reflect.InvocationTargetException: 43) at java.lang.reflect.Method.invoke(Method.java:497) at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:98) ... 36 更多原因:org. apache.camel.RuntimeCamelException: javax.enterprise.inject.InjectionException: Camel 注释后处理 [InjectionTarget for Managed Bean [class org.apache.camel.cdi.component.properties.CdiPropertiesComponent] 与限定符 [@Default @Named @Any] ] 失败的!在 org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1642) 在 org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookupByName(PropertyPlaceholderDelegateRegistry.java:52) 在 org.apache.camel.util.CamelContextHelper.lookupPropertiesComponent (CamelContextHelper.java:575) 在 org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2966) 在 org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175) 在 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) 在 org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2808) 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 在 org.apache.camel。 org.apache 的 impl.DefaultCamelContext.start(DefaultCamelContext.java:2777) .camel.cdi.CdiCamelContext.start(CdiCamelContext.java:76)
我需要找到一种正确的方法来使用骆驼 cdi 并在不同的项目中访问相同的骆驼上下文。
【问题讨论】:
标签: java apache-camel