Can you look up you EJB with the jndi setting and name CamelBeanJNDI as a simple EJB client ? It looks more like a EJB look up issue instead of camel-ejb component issue.

On Tue Sep  6 22:05:02 2011, Peter Thygesen wrote:
I'm trying to get the EJB component to work with/in Glassfish 3.1.1. But I
get an lookup exception. What am I doing wrong?

/Peter

avax.naming.NamingException: Lookup failed for 'CamelInterface' in
SerialContext[myEnv={...removed...} [Root exception is
javax.naming.NameNotFoundException: CamelInterface not found]
at
com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at
com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at
org.apache.camel.component.ejb.EjbRegistryBean.lookupBean(EjbRegistryBean.java:45)
at
org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:62)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:84)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:104)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:74)
at
org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:102)
at
org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:72)
at
org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:114)
at
org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:286)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:109)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:172)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:318)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:209)
at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:305)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:116)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:79)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:102)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:104)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
at
org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:121)
at
org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:58)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)




Environment: Camel-2.8.0, Glassfish 3.1.1

INTERFACE:

@Remote

public interface CamelInterface {

public String helloWorld(String message);

}


IMPLEMENTATION:

@Stateless(name="Example", mappedName="CamelBeanJNDI")

public class CamelBean implements CamelInterface {

@Override

public String helloWorld(String message) {

   return "daws, " + message;

}

}


JNDI ENTRIES:

Checking JNDI entries on GF (asadmin list-jndi-entries)

...

CamelBeanJNDI#com.infopaq.research.sandbox.CamelInterface:
javax.naming.Reference

CamelBeanJNDI__3_x_Internal_RemoteBusinessHome__: javax.naming.Reference

CamelBeanJNDI: javax.naming.Reference
...

CAMEL:
(project generated with camel-archetype-web)

Spring part:
<beans ....>
     <bean id="testRoute"
class="com.infopaq.research.sandbox.CamelEJBTest.RouteConfiguration"/>

     <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring
">
         <camel:routeBuilder ref="testRoute"/>
     </camelContext>
</beans>

ROUTE CONFIGURATION:
public class RouteConfiguration extends RouteBuilder {

   @Override
   public void configure() throws Exception {

     // enlist EJB component using the JndiContext
     EjbComponent ejb = getContext().getComponent("ejb", EjbComponent.class);
     ejb.setContext(createEjbContext());

     from("timer://cameltest?fixedRate=true&period=6000")
         .routeId("camel-ejb-route")
         .process(new Processor() {
           @Override
           public void process(Exchange exchange) throws Exception {
             // also used for breakpoint....
             exchange.getIn().setBody("Bob", String.class);
           }
         })
         .to("ejb:CamelBeanJNDI?method=helloWorld")
         .setHeader(Exchange.FILE_NAME, constant("helloworld.txt"))   // dump
it in a file...
         .to("file:///var/tmp/camel-test")
         .to("log:com.infopaq.research.sandbox?showAll=true");

}

private static Context createEjbContext() throws NamingException {
     Properties properties = new Properties();
     properties.setProperty("java.naming.factory.initial",
         "com.sun.enterprise.naming.SerialInitContextFactory");
     properties.setProperty("java.naming.factory.url.pkgs",
         "com.sun.enterprise.naming");
     properties.setProperty("java.naming.factory.state",
         "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

     // I have tried to used these properties but it didnt help.
     // optional.  Defaults to localhost.  Only needed if web server is
running
     // on a different host than the appserver
     //properties.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
     // optional.  Defaults to 3700.  Only needed if target orb port is not
3700.
     //properties.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

     return new InitialContext(properties);
   }

}




--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
        http://jnn.javaeye.com (Chinese)
Twitter: willemjiang Weibo: willemjiang

Reply via email to