This all looks OK for sending the B instance.   Can you double check that on 
the service side it knows about the B.class via an XmlSeeAlso annotation or 
similar?   If you do a ?wsdl on the service address, does the resulting 
wsdl/schema define the B type as an extension of A?

Dan



On Mar 4, 2014, at 1:09 PM, allam-di14 <[email protected]> wrote:

> In the meantime, I have made some improvements to my code.
> 
> I resolved the issue at the client side: the problem is due to a space in
> front of "address" in my spring configuration file:
> address=" http://localhost:8080/SOAP-test2/services/ServicePort"; 
> 
> For the other problems, it was due to the JAXB validator. To resolve it, I
> disabled the validator handler in my spring configuration file:
> <jaxws:properties>
>           <entry key="schema-validation-enabled" value="false" />
>           <entry key="set-jaxb-validation-event-handler" value="false" /> 
> </jaxws:properties>
> 
> 
> My question now is, before when I used @XmlSeeAlso(B.class) on top of Class
> A, the client was able to call op with a B instance and it corresponds to an
> op invocation with a B instance at the server.
> (to remind, my operation op is defined as follows: void op(A a) such that B
> inherits A)
> 
> Now, by using a single JAXBContext and JAXBElement conversions, if a client
> calls op with a B instance, that corresponds to an op invocation with an A
> instance at the server.
> 
> Is-there a way to keep the same instances at the client and the server
> sides?
> 
> I did the following test code separately in JAXB:
>                        JAXBContext jc = JAXBContext.newInstance("test");
>                        Marshaller marshaller = jc.createMarshaller();         
>                       
>                       B b = new B();
>                       b.setX("hello");
>                       b.setY(32);
>                       Op op = new Op();
>                       op.setArg0(b);
>                       JAXBElement<Op> op2 = new JAXBElement<Op>(new
> QName("http://test/";, "op"), Op.class, op);
>                       marshaller.marshal(op2, System.out);
>                               
>                       
>                       File out = new File("src/test/output.xml");
>                               marshaller.marshal(op2, out);
>                               Unmarshaller unmarshaller = 
> jc.createUnmarshaller();
>                               StreamSource xml2 = new 
> StreamSource("src/test/output.xml");
>                               JAXBElement<Op> op3 =  
> unmarshaller.unmarshal(xml2, Op.class);
>                        
>                       System.out.println( op3.getValue().getArg0());
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> the result of unmarshalling is an OP instance with a reference to a B
> instance.
> Thus, the issue is not from JAXB, but maybe from the way cxf calls the
> unmarshal method on the received xml.
> 
> Indeed, their is not a difference between the soap body created by cxf:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soap:Body>
>               <ns2:op xmlns:ns2="http://test/";>
>                       <arg0 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>                               xsi:type="ns2:b">
>                               <x>salut</x>
>                               <y>2014</y>
>                       </arg0>
>               </ns2:op>
>       </soap:Body>
> </soap:Envelope>
> --------------------------------------
> 
> and the xml created by my JAXB test code:
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <ns2:op xmlns:ns2="http://test/";>
>       <arg0 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>               xsi:type="b">
>               <x>hello</x>
>               <y>32</y>
>       </arg0>
> </ns2:op>
> 
> I am using cxf 2.7.10 version
> 
> Any help please?
> Kind regards, 
> Diana 
> 
> 
> 
> 
> 
> --
> View this message in context: 
> http://cxf.547215.n5.nabble.com/How-to-configure-CXF-for-a-single-JAXBContext-and-for-an-automatic-JAXBElement-conversion-tp5740782p5740803.html
> Sent from the cxf-user mailing list archive at Nabble.com.

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to