Thank you very much for your answer!
It is very helpful.

Would you have any suggestion to pass an Object from the cxf-se_1 to the 
bean-se, too?

I know that I should use the strategy you have suggested me, and I should 
delete at all the bean-se but unfourtunally I have Implemented a publish 
subscribe between bean-ses and I have to finish in 2 days my the application 
and documentation.

So in my application a bean-se receives more than one MessageExchange and makes 
some computation.

How could I pass Objects inside MessageExchange?

Thank you for your help,

Best Regards

anna
---------- Initial Header -----------

>From      : "Freeman Fang" [email protected]
To          : [email protected]
Cc          :
Date      : Tue, 13 Jan 2009 10:02:06 +0800
Subject : Re: Sending Object between cxf-se published in servicemix







> [email protected] wrote:
> > Hello,
> > thank you for your answer.
> > Lower I give you some further information.
> > Could you help me please?
> >
> > You asked:
> > Why you need do the marshalling yourself?
> >
> > There is an external client that make a request to a service inside the bus 
> > (cxf-se_1) also exposed externally by a cxf-bc_1.
> >
> > When the client invoke an operation on cxf-se_1 it has to take the 
> > parameter received as input and send to the normalized message router that 
> > deliver the message to a service-mix bean.
> > To send a message through the NMR, if  I understood well is necessary 
> > transform the data to send to Xml.
> > When I have to send a String on a int or a boolean I can make a 
> > transformation in one direction to the another easly.
> > But How I should work with Objects?
> > I explain a bit more:
> > The servicemix-bean that has received the message choose with some logics 
> > another cxf-se to invoke and also the method to invoke. This cxf-se_2 is 
> > exposed internally in the bus.
> > When the bean has decided the serice and the method, it has to make an 
> > invocation  to this service and so send a message of the form:
> > String messageStringContent = "<message 
> > xmlns='http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper'>"
> >
> >>> + "  <part>"
> >>> + "    <doLogin xmlns='http://myproject.com/NDWS3/types'>"
> >>> + "      <arg0>" + ???????? + "</arg0>"
> >>> + "    </doLogin>"
> >>> + "  </part>"
> >>> + "</message>";
> >>> inOutExchange.getInMessage().setContent(new 
> >>> StringSource(messageStringContent));
> >>>
> > I have found this in the examples and it makes me able to make an 
> > invocation to the cxf-se exposed internally by another service exposed 
> > internally.
> >
> > What should stay in the place of ?????? is some String that is tha result 
> > of sime kind of marshalling applied to an Object.
> > How the type of unmarshalling is done by the cxf-se when is invoked 
> > internally in the bus?
> >
> > If I know that, I can call every method in my services, by now only methods 
> > that has as input and output parameter only String and primitive types.
> >
> > The cxf-se_2 has to send back the result to the bean and this has to send 
> > back the same to cxf-se_1 and this communication is all inside the bus.
> >
> > Then cxf-se_1 turn back the result to the external client and this made 
> > automatically by the library and I'm not really interested now in 
> > understanding how this works, but this is important to understand what I 
> > need.
> >
> >
> For your scenario, I believe you can inject the proxy of  your cxfse
> into your bean, then invoke the cxfse2 from your bean, just like normal
> java method invocation, it will do the marshalling from java object (the
> argument) to the JBI message (passed by the NMR) automatically for you,
> and on the cxfse2 in your flow, will do the unmarshalling (from JBI
> message to the java object based on the servicemodel, the servicemodel 
> is generated from your wsdl used in cxfse2)
> By this way, you needn't care the details of marshalling/unmarshalling 
> yourself.
> Take a look at [1], the Proxies part.
> [1]http://servicemix.apache.org/servicemix-cxf-se.html
>
> Freeman
> > Please help me with some suggestion,
> > thank you very much
> > best regards
> > anna
> > ---------- Initial Header -----------
> >
> > >From      : "Freeman Fang" [email protected]
> > To          : [email protected]
> > Cc          :
> > Date      : Mon, 12 Jan 2009 09:51:34 +0800
> > Subject : Re: Sending Object between cxf-se published in servicemix
> >
> >
> >> [email protected] wrote:
> >>
> >>> Hi all,
> >>>
> >>> I have to implement this type of communication:
> >>>
> >>> external client <====> cxf-bc_1 <====> cxf-se_1 <====> bean-se <====> 
> >>> cxf-se_2
> >>>
> >>> now I send message from cxf-se_1 to bean-se, and then to cxf-se_2, like 
> >>> this:
> >>>
> >>> int in0 = 1;
> >>> String messageStringContent = "<message 
> >>> xmlns='http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper'>"
> >>> + "  <part>"
> >>> + "    <doLogin xmlns='http://myproject.com/NDWS3/types'>"
> >>> + "      <arg0>" + in0 + "</arg0>"
> >>> + "    </doLogin>"
> >>> + "  </part>"
> >>> + "</message>";
> >>> inOutExchange.getInMessage().setContent(new 
> >>> StringSource(messageStringContent));
> >>>
> >>> So I had transformed in0 in a String.
> >>> If I have to send an Object, for example a  Person,
> >>> from cxf-se_1, so that cxf-se_2 can recognize it, how I should transform 
> >>> it to a String to send through a Normalized Message and so that I can
> >>>
> >> The marshalling from java object to xml message is based on your wsdl
> >> and delegated to JAXB.
> >> Why you need do the marshalling yourself?
> >>
> >
> >
> >
> >
> >
> >
> >> If you are not familiar with the jaxb and wsdl to java object mapping,
> >> one way you could know what's the jbi message looks like is do a simple
> >> project like we do for example cxf-wsdl-first (you need use your wsdl
> >> and your impl class, where the wsdl define your person object), and turn
> >> on the log, then you can see the jbi message in the flow.
> >> Freeman
> >>
> >>> communicate it to cxf-se_2 (that is implemented as a simple POJO)?
> >>>
> >>> I'll be very grateful for every suggestion you would send.
> >>> Thank you in advance.
> >>> Best Regards,
> >>> anna
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>
> >
> >
> >
>
>

Reply via email to