I have created a camel-example-remote-ejb project containing a test
case with a remote EJB deployed on openEJB and that works fine using
InitialContext with the properties provided in my first email. So the
project + remote EJB is in order. This is the camel + jndi in OSGI
container where we have a problem.

On Thu, Jun 16, 2011 at 8:18 PM, Romain Manni-Bucau
<[email protected]> wrote:
> Charles, which part of code do you think is not working?
>
> I never tried the camel-ejb component in OSGi but i did openejb remote
> client in servicemix and it works fine and camel doesn't add anything on it,
> just a way to get a bean not the initial context.
>
> Can you just check your properties are used and if it is the case can you
> try a manual client?
>
> I think i had some issues reading system.properties or jndi.properties with
> camel in a non osgi envt some weeks ago (that's why i used spring to do the
> lookup).
>
> - Romain
>
> 2011/6/16 Charles Moulliard <[email protected]>
>
>> The camel route has been deployed using deploy dir of servicemix and
>> DynamicImport package is enable. I have also installed the openEJB
>> client jar and wrapped it. So everything is in place
>>
>> On Thu, Jun 16, 2011 at 4:50 PM, Romain Manni-Bucau
>> <[email protected]> wrote:
>> > oh you are in an OSGi container?
>> >
>> > for openejb you have to import package org.apache.openejb.client and
>> > org.apache.openejb.client.proxy i think or something like that (i don't
>> > really remember).
>> >
>> > - Romain
>> >
>> > 2011/6/16 Charles Moulliard <[email protected]>
>> >
>> >> I think that the code that we use to create the endpoint works fine in
>> >> a non osgi environment but not on osgi as jndi is not really supported
>> >>
>> >>    @Override
>> >>    protected Endpoint createEndpoint(String uri, String remaining,
>> >> Map<String, Object> parameters) throws Exception {
>> >>        BeanEndpoint answer = new BeanEndpoint(uri, this);
>> >>        answer.setBeanName(remaining);
>> >>
>> >>        // plugin registry to lookup in jndi for the EJBs
>> >>        Registry registry = new JndiRegistry(getContext());
>> >>        answer.setBeanHolder(new EjbRegistryBean(registry,
>> >> getCamelContext(), answer.getBeanName()));
>> >>
>> >>        Processor processor = answer.getProcessor();
>> >>        setProperties(processor, parameters);
>> >>        return answer;
>> >>     }
>> >>
>> >>
>> >> On Wed, Jun 15, 2011 at 11:33 PM, Romain Manni-Bucau
>> >> <[email protected]> wrote:
>> >> > Hi,
>> >> >
>> >> > creating a list with spring should work but i think the problem is the
>> >> > context creation here.
>> >> >
>> >> > personnaly i use the bean component and i ask to me (with java dsl) or
>> >> > spring to do the lookup to put it in the camel registry.
>> >> >
>> >> > - Romain
>> >> >
>> >> > 2011/6/15 Charles Moulliard <[email protected]>
>> >> >
>> >> >> Hi,
>> >> >>
>> >> >> I try to use openejb from camel using camel-ejb but get this error
>> >> >> when camel looks to find the ejb stateless bean
>> >> >>
>> >> >> <beans xmlns="http://www.springframework.org/schema/beans";
>> >> >>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> >> >>       xmlns:p="http://www.springframework.org/schema/util";
>> >> >>       xsi:schemaLocation="
>> >> >>       http://www.springframework.org/schema/beans
>> >> >> http://www.springframework.org/schema/beans/spring-beans.xsd
>> >> >>       http://www.springframework.org/schema/util
>> >> >> http://www.springframework.org/schema/util/spring-util.xsd
>> >> >>       http://camel.apache.org/schema/spring
>> >> >> http://camel.apache.org/schema/spring/camel-spring.xsd";>
>> >> >>
>> >> >>    <camelContext xmlns="http://camel.apache.org/schema/spring";>
>> >> >>        <route>
>> >> >>            <from uri="timer://foo?fixedRate=true&amp;period=5s"/>
>> >> >>            <setBody>
>> >> >>                                <constant>4</constant>
>> >> >>                                <constant>3</constant>
>> >> >>                </setBody>
>> >> >>            <to uri="ejb:CalculatorImplRemote?method=sum"/>
>> >> >>            <log message=">>> Result : ${body}"/>
>> >> >>        </route>
>> >> >>    </camelContext>
>> >> >>
>> >> >>    <!-- setup Camel EJB component -->
>> >> >>    <bean id="ejb"
>> class="org.apache.camel.component.ejb.EjbComponent">
>> >> >>        <property name="properties" ref="jndiProperties"/>
>> >> >>    </bean>
>> >> >>
>> >> >>    <!-- use OpenEJB context factory -->
>> >> >>    <p:properties id="jndiProperties">
>> >> >>        <prop
>> >> >>
>> >>
>> key="java.naming.factory.initial">org.apache.openejb.client.RemoteInitialContextFactory</prop>
>> >> >>        <prop key="java.naming.provider.url">ejbd://127.0.0.1:4201
>> >> </prop>
>> >> >>        <prop key="java.naming.security.principal">daniel</prop>
>> >> >>        <prop key="java.naming.security.credentials">password</prop>
>> >> >>    </p:properties>
>> >> >>
>> >> >> </beans>
>> >> >>
>> >> >> 23:12:32,227 | ERROR | foo              | DefaultErrorHandler
>> >> >>    | ache.camel.processor.CamelLogger  232 | 64 -
>> >> >> org.apache.camel.camel-core - 2.7.0 | Failed delivery for exchangeId:
>> >> >> ID-biker-chm-local-58833-1308171227583-5-6. Exhausted after delivery
>> >> >> attempt: 1 caught: org.apache.camel.NoSuchBeanException: No bean
>> could
>> >> >> be found in the registry for: CalculatorImplRemote
>> >> >> org.apache.camel.NoSuchBeanException: No bean could be found in the
>> >> >> registry for: CalculatorImplRemote
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:68)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:84)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:103)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:74)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:102)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:72)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>        at
>> >> >>
>> >>
>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)[64:org.apache.camel.camel-core:2.7.0]
>> >> >>
>> >> >>
>> >> >> How can we define using <setBody> tag the following two parameters to
>> >> >> call the method sum of the stateless ejb CalculatorRemote ?
>> >> >>
>> >> >>    public int sum(int add1, int add2);
>> >> >>
>> >> >> <setBody>
>> >> >>  <constant>???</constant>
>> >> >> </setBody>
>> >> >>
>> >> >>
>> >> >> Regards,
>> >> >>
>> >> >> Charles Moulliard
>> >> >>
>> >> >> Apache Committer
>> >> >>
>> >> >> Blog : http://cmoulliard.blogspot.com
>> >> >> Twitter : http://twitter.com/cmoulliard
>> >> >> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>> >> >> Skype: cmoulliard
>> >> >>
>> >> >
>> >>
>> >
>>
>

Reply via email to