http://cxf.apache.org/docs/jax-rs.html#JAX-RS-HandlingJAXBbeanswithoutXmlRootElementannotations

cheers, Sergey
  ----- Original Message ----- 
  From: Pydipati, Karuna 
  To: Sergey Beryozkin ; [email protected] 
  Sent: Thursday, October 29, 2009 5:11 PM
  Subject: RE: Messagebodywriter issue for RESTful web services


  oh. is there any documentation or example out there?

  Regards

  Karuna Pydipati

  StubHub/eBay - Platform & Services

  Phone: (415)222-8752

  Email: [email protected]







------------------------------------------------------------------------------
  From: Sergey Beryozkin [mailto:[email protected]] 
  Sent: Thursday, October 29, 2009 10:04 AM
  To: Pydipati, Karuna; [email protected]
  Subject: Re: Messagebodywriter issue for RESTful web services


  Hi, thanks for the confirmation....
  You can also explicitly register a JAXB provider and instruct it to 
'marshalAsJaxbElement' and then you can avoid setting this annotation

  cheers, Sergey 
    ----- Original Message ----- 
    From: Pydipati, Karuna 
    To: [email protected] ; Sergey Beryozkin 
    Sent: Thursday, October 29, 2009 4:59 PM
    Subject: RE: Messagebodywriter issue for RESTful web services


    I found the issue. I forgot to add "@XmlRootElement(name = 
"UserContactResponse")" above the class

    @XmlRootElement(name = "UserContactResponse")

    public class UserContactResponse {



    Regards

    Karuna Pydipati

    StubHub/eBay - Platform & Services

    Phone: (415)222-8752

    Email: [email protected]







----------------------------------------------------------------------------
    From: Pydipati, Karuna 
    Sent: Wednesday, October 28, 2009 9:40 PM
    To: [email protected]; Sergey Beryozkin
    Subject: Messagebodywriter issue for RESTful web services


    I am getting the following error and I tried all options. I remember that 
similar code was working few months back without any custom Serializers

    1) Error in log
    =========
    ----------------------------
    ID: 1
    Address: /xxxapi/xxxRestService/patientmatch/3/contacts/1
    Encoding:
    Content-Type:
    Headers: {connection=[keep-alive], host=[localhost:8080], 
user-agent=[Java/1.5.0_14], Content-Type=[null], Accept=[text/html,
    Payload:
    --------------------------------------
    Oct 28, 2009 9:25:04 PM 
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
    WARNING: .No message body writer found for response class : 
UserContactResponse.
    Oct 28, 2009 9:25:04 PM 
org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
    INFO: Outbound Message
    ---------------------------
    ID: 1
    Encoding:
    Content-Type: text/xml
    Headers: {Date=[Thu, 29 Oct 2009 04:25:04 GMT]}
    Payload: .No message body writer found for response class : 
UserContactResponse.
    --------------------------------------

    2) Interface class
    package com.xxx.ws.rest;

    import java.util.List;

    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.PathSegment;

    import com.xxx.ws.soap.PatientMatchResp;
    import com.xxx.ws.soap.UserContactResponse;

    @Path("/patientmatch/")

    @Consumes( {  "application/xml" })
    @Produces( {  "application/xml" })
    public interface XXXService {


     
       @GET
         @Path("/{userid}/contacts/{contactId}")
         public UserContactResponse getContact(@PathParam("userid")
         String userGuid, @PathParam("contactId")
         String contactId);
    }

    3) Impl class


    @WebService(endpointInterface = "com.xxx.ws.rest.XXXService", serviceName = 
"/")
    public class XXXServiceImpl implements XXXService {

     private static Logger log = Logger.getLogger(XXXServiceImpl .class);

    public UserContactResponse getContact(String userid, String contactId) {
      // TODO Auto-generated method stub
      UserContactResponse ucr = new UserContactResponse();
      UserContact uc = new UserContact();
      uc.setCity("fremont");
      uc.setActive(true);
      uc.setAptNumber("11");
      uc.setChkPmtToCo(true);
      uc.setCompany("fff");
      ucr.setUserContact(uc);
      return ucr;
     }
      
    }

    4) UserContactResponse (this contains UserContact which has few String and 
Long fieds. Thats all. No arrays or List)

    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlType;

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "UserContactResponse", propOrder = { "userContact"
    })
    public class UserContactResponse {

     @XmlElement(name = "UserContact", required = true)
     UserContact userContact;

     public UserContact getUserContact() {
      return userContact;
     }

     public void setUserContact(UserContact userContact) {
      this.userContact = userContact;
     }


     }



    4) cxf-bean.xml file
    <jaxws:endpoint 

    id="XXXService" 

    implementor="com.xxx.ws.soap.XXXServiceImpl" 

    address="/XXXService"/>


    <bean id="xxxRestService" class="com.xxx.ws.rest.XXXServiceImpl" />


    <jaxrs:server id="restServices" address="/xxxRestService">

    <jaxrs:serviceBeans> 

    <ref bean="xxxRestService" />

    </jaxrs:serviceBeans>

    </jaxrs:server>



    Regards

    Karuna Pydipati

    StubHub/eBay - Platform & Services

    Phone: (415)222-8752

    Email: [email protected]



Reply via email to