You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by jcamus <jc...@parkeon.com> on 2009/10/07 08:54:29 UTC
Documentation problem with DefaultServiceMixClient
Hi!
I'am trying from a given CXF-SE to use a DefaultServiceMixClient to send a
sync message into the NMR.
I found the following URL : http://servicemix.apache.org/client-api.html
http://servicemix.apache.org/client-api.html describing how to use a JBI
client into a given component.
I tried to inject a given ServiceMix client into my component and I set up
my xbean.xml like this (as explained into the documentation) :
<bean id="clientWithRouting"
class="org.apache.servicemix.client.DefaultServiceMixClient">
<constructor-arg ref="jbi" />
<constructor-arg>
<sm:activationSpec
destinationService="parkeon:exportationReferencialRouter"/>
</constructor-arg>
</bean>
but, the ref="jbi" is not explained! And I have the message : No bean named
'jbi' is defined !
What is the "jbi" ref?
Help please!
Regards
--
View this message in context: http://www.nabble.com/Documentation-problem-with-DefaultServiceMixClient-tp25781401p25781401.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Documentation problem with DefaultServiceMixClient
Posted by jcamus <jc...@parkeon.com>.
ok thanks !
I tried this which works fine as well :
InOut exchange = getClient().createInOutExchange();
QName service = new QName(m_referencialRouterNamespace,
m_referencialRouterServiceName);
exchange.setService(service);
......
getClient().sendSync(exchange);
....
private ServiceMixClient getClient() throws Exception {
if (m_client == null) {
ClientFactory factory = (ClientFactory) new
InitialContext().lookup(ClientFactory.DEFAULT_JNDI_NAME);
m_client = factory.createClient();
}
return m_client;
}
Jean-Baptiste Onofré wrote:
>
> Hi,
>
> the DefaultServiceMixClient constructor that you use takes two arguments:
> - the first one (jbi) is the JBIContainer itself.
> - the second one is the activation spec.
>
> When you start a ServiceMix 3 in embedded mode, you get it:
> JBIContainer container = new JBIContainer();
> container.setEmbedded(true);
> container:init();
> container.start();
> DefaultServiceMixClient client = new DefaultServiceMixClient(container);
>
> In your case, as you're at the component level, I think that you can't
> get the JBI container in this context.
>
> However, from CXF-SE, you can access to the JBI bus and use the
> ServiceMixClientFacade.
>
> To do it, in your POJO, you can inject the bus:
>
> private javax.jbi.component.ComponentContext context;
>
> public void setContext(javax.jbi.component.ComponentContext context) {
> this.context = context;
> }
>
> after you can use this context in the client:
>
> public void myMethod() {
> ServiceMixClient client = new ServiceMixClientFacade(this.context);
> QName service = new QName("http://servicemix.org/cheese/", "receiver");
> EndpointResolver resolver = client.createResolverForService(service);
> client.send(resolver, null, null, "<hello>world</hello>");
> }
>
> and that's it ;)
>
> Regards
> JB
>
> jcamus wrote:
>> Hi!
>>
>> I'am trying from a given CXF-SE to use a DefaultServiceMixClient to send
>> a
>> sync message into the NMR.
>> I found the following URL : http://servicemix.apache.org/client-api.html
>> http://servicemix.apache.org/client-api.html describing how to use a JBI
>> client into a given component.
>>
>> I tried to inject a given ServiceMix client into my component and I set
>> up
>> my xbean.xml like this (as explained into the documentation) :
>>
>> <bean id="clientWithRouting"
>> class="org.apache.servicemix.client.DefaultServiceMixClient">
>> <constructor-arg ref="jbi" />
>> <constructor-arg>
>> <sm:activationSpec
>> destinationService="parkeon:exportationReferencialRouter"/>
>> </constructor-arg>
>> </bean>
>>
>>
>> but, the ref="jbi" is not explained! And I have the message : No bean
>> named
>> 'jbi' is defined !
>> What is the "jbi" ref?
>> Help please!
>>
>> Regards
>>
>>
>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Documentation-problem-with-DefaultServiceMixClient-tp25781401p25786157.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Documentation problem with DefaultServiceMixClient
Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,
the DefaultServiceMixClient constructor that you use takes two arguments:
- the first one (jbi) is the JBIContainer itself.
- the second one is the activation spec.
When you start a ServiceMix 3 in embedded mode, you get it:
JBIContainer container = new JBIContainer();
container.setEmbedded(true);
container:init();
container.start();
DefaultServiceMixClient client = new DefaultServiceMixClient(container);
In your case, as you're at the component level, I think that you can't
get the JBI container in this context.
However, from CXF-SE, you can access to the JBI bus and use the
ServiceMixClientFacade.
To do it, in your POJO, you can inject the bus:
private javax.jbi.component.ComponentContext context;
public void setContext(javax.jbi.component.ComponentContext context) {
this.context = context;
}
after you can use this context in the client:
public void myMethod() {
ServiceMixClient client = new ServiceMixClientFacade(this.context);
QName service = new QName("http://servicemix.org/cheese/", "receiver");
EndpointResolver resolver = client.createResolverForService(service);
client.send(resolver, null, null, "<hello>world</hello>");
}
and that's it ;)
Regards
JB
jcamus wrote:
> Hi!
>
> I'am trying from a given CXF-SE to use a DefaultServiceMixClient to send a
> sync message into the NMR.
> I found the following URL : http://servicemix.apache.org/client-api.html
> http://servicemix.apache.org/client-api.html describing how to use a JBI
> client into a given component.
>
> I tried to inject a given ServiceMix client into my component and I set up
> my xbean.xml like this (as explained into the documentation) :
>
> <bean id="clientWithRouting"
> class="org.apache.servicemix.client.DefaultServiceMixClient">
> <constructor-arg ref="jbi" />
> <constructor-arg>
> <sm:activationSpec
> destinationService="parkeon:exportationReferencialRouter"/>
> </constructor-arg>
> </bean>
>
>
> but, the ref="jbi" is not explained! And I have the message : No bean named
> 'jbi' is defined !
> What is the "jbi" ref?
> Help please!
>
> Regards
>
>
>
>
>