【发布时间】:2014-09-22 05:55:05
【问题描述】:
我正在调用部署在 Jboss jboss-as-7.1.1.Final 中的 EJB。下面是我用来调用和 EJB 的一段代码。
private void sendRequest() {
String camelID = "jbossejb";
Exchange furExchange = null;
Message msg = null;
final Employee employee = new Employee();
ProducerTemplate pProducerTemplate = getProducerTemplate();
Endpoint endPoint = springCamelContext.getEndpoint("jbossejb");
Future<Exchange> futurexchange = (Future<Exchange>) pProducerTemplate
.asyncSend(endPoint, new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setBody(employee);
}
});
System.out.println("futurexchange:" + futurexchange);
try {
furExchange = futurexchange.get(15000, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (furExchange.getException() == null) {
msg = furExchange.getOut();
String messageId = furExchange.getIn().getMessageId();
System.out.println("In Camel MessageID -:" + messageId);
msg = furExchange.getOut();
System.out.println("Message:" + msg);
} else {
Exception ex = furExchange.getException();
ex.printStackTrace();
}
}
JNDI 详情如下
<bean id="ejb" class="org.apache.camel.component.ejb.EjbComponent">
<property name="properties" ref="jndiProperties" />
</bean>
<util:properties id="jndiProperties">
<prop key="java.naming.factory.initial">org.jboss.naming.remote.client.InitialContextFactory</prop>
<prop key="java.naming.provider.url">remote://localhost:4447</prop>
<prop key="jboss.naming.client.ejb.context">true</prop>
<prop key="java.naming.security.principal">jboss7</prop>
<prop key="java.naming.security.credentials">password</prop>
</util:properties>
抛出异常 java.lang.IllegalStateException 并带有下面的堆栈跟踪
java.lang.IllegalStateException: No EJB receiver available for handling [appName:,modulename:MappedEJBModule,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@508894e3
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
at com.sun.proxy.$Proxy35.receiveEmployee(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:407)
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:278)
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:251)
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:67)
at org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:103)
at org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:378)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:346)
at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:242)
at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:346)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
at org.apache.camel.impl.DefaultProducerTemplate$13.call(DefaultProducerTemplate.java:612)
at org.apache.camel.impl.DefaultProducerTemplate$13.call(DefaultProducerTemplate.java:610)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
当 EJB 部署在任何其他应用程序服务器(IBM Websphere 和 Weblogic)中时,我能够接收到响应。
请告诉我是什么导致 Jboss 出现问题。
【问题讨论】:
标签: java jakarta-ee jboss apache-camel