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