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&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
>>
>