Hi
On 05/06/12 16:46, dallam wrote:
Hello,

I have the following simple java Class which I would like to publish as a
web service:

--------------------------------------------------------------------------------------
public class Service  {
        
        public String print(Person p){
                return p.info();
        }

}
--------------------------------------------------------------------------------------
I have also two classes, "Person" and its subclass "Student" which define
differently the "info()" method:
------------------------------------------------------------------------------------
public class Person {
        
        private String name;
        
        public Person() {
                this.name = "diana";
        }
        
        public String info(){
                return "this is a person, his name is " + this.name;
        }
        
        public String getName(){
                return this.name;
        }
        
        public void setName(String name){
                this.name = name;
        }
}
------------------------------------------------------------------------------------
public class Student extends Person{
        
private String school;
        
        public Student() {
                 super();
                this.school="emn";
        }

        public String info(){
                return "this is a student, his name is " + this.getName() + " 
from the
school of " + this.school;
        }
        
        public String getSchool(){
                return this.school;
        }
        
        public void setSchool(String school){
                this.school = school;
        }

}
---------------------------------------------------------------------------------------------------------------------

The problem is by using jaxws, I didn't find the way to build a client which
would like to call the print service with a student object. Only "person"
objects are accepted.
Is there a way to do that in cxf?

The same is for JaxRS by using annotations.
For example, if I have the following post method:
---------------------------------------------------------
@POST
     @Path("/persons/")
     public Response addPerson(Person p) {  ... }
---------------------------------------------------------
and I annotated the person class with:
@XmlRootElement(name = "Person")

and the Student class which extends Person is annotated with:
@XmlRootElement(name = "Student")


I can't send to the post method an XML with a "Student" root element because
only "Person" root element is accepted.

This should work OK with CXF 2.4.8/2.5.4/2.6.1, please also see
http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-AutomaticJAXBElementconversionduringserialization

Cheers, Sergey

Is there an inheritance annotation in cxf to solve this problem? if not, why
this issue is not considered
in the implementation of the cxf framework?


Best regards,

Diana



--
View this message in context: 
http://cxf.547215.n5.nabble.com/How-the-inheritance-in-java-is-supported-in-SOAP-and-RESTful-services-by-using-cxf-tp5709127.html
Sent from the cxf-user mailing list archive at Nabble.com.


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to