cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin" <sbery...@progress.com>
Subject Re: JAXB xml response marshalling issue
Date Wed, 11 Nov 2009 11:04:46 GMT
Please see http://cwiki.apache.org/CXF20DOC/jax-rs.html#JAX-RS-ConfiguringJAXRSservices

thanks, Sergey

----- Original Message ----- 
From: "Cristian Botiza" <Cristian.Botiza@endava.com>
To: <users@cxf.apache.org>
Sent: Wednesday, November 11, 2009 10:46 AM
Subject: RE: JAXB xml response marshalling issue



I used a classpath file cxf.xml:

web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:cxf.xml
    </param-value>
</context-param>

<listener>
    <listener-class>
  org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

And in cxf.xml:

<jaxws:server id="mathservice"
 serviceClass="com...MathService"
 address="http://localhost:8080/MathService/"
        bindingId="http://apache.org/cxf/binding/http">
            <jaxws:serviceBean>
                <bean class="com...MathResource"/>
            </jaxws:serviceBean>
 <jaxws:serviceFactory>
  <bean class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
    <property name="wrapped" value="true" />
     </bean>
 </jaxws:serviceFactory>
</jaxws:server>
________________________________________
From: Sergey Beryozkin [sberyozk@progress.com]
Sent: 11 November 2009 12:43
To: users@cxf.apache.org
Subject: Re: JAXB xml response marshalling issue

Hi

I'm sorry, can't help you here. Please consider moving to JAXRS as the HTTP binding (the one
you're using) is not mantained, only
some of the blockers for the existing users might get fixed occasionally.

> unfortunately the jaxrs annotations seem to be ignored by CXF at least in my experience

How did you register a jaxrs:server endpoint from Spring ?

Sergey

----- Original Message -----
From: "Cristian Botiza" <Cristian.Botiza@endava.com>
To: <users@cxf.apache.org>
Sent: Wednesday, November 11, 2009 10:35 AM
Subject: RE: JAXB xml response marshalling issue


Thanks for your quick response.

I'm using annotations from org.codehaus.jra package (unfortunately the jaxrs annotations seem
to be ignored by CXF at least in my
experience).
Ok, the code follows.

interface:
@WebService()
@Produces("application/xml")
@Consumes("application/xml")
@HttpResource(location="/services/maths")
public interface MathService {
    @Put
    @HttpResource(location="/Add")
    MathResponse sum(MathRequest req);
    @Post
    @HttpResource(location="/Subtract")
    MathResponse subtract(MathRequest req);
    @Post
    @HttpResource(location="/Multiply")
    MathResponse multiply(MathRequest req);
}
implementation class:
public class MathResource implements MathService {
    public MathResource() {
    }
    public MathResponse sum(MathRequest req) {
    }
    public MathResponse multiply(MathRequest req) {
        BigDecimal result = req.getNumber1().multiply(req.getNumber2());
        MathResponse r = new MathResponse();
        r.setStatusCode(200);
        r.setError(false);
        r.setResult(result);
        return r;
    }
    public MathResponse subtract(MathRequest req) {
        //see above
    }
}

And the JAXB annotated classes (MathRequest, MathResponse):
@XmlRootElement(name="CALCREQUEST")
public class MathRequest {

 private BigDecimal number1;

 private BigDecimal number2;
 @XmlElement(name="NUM1")
 public BigDecimal getNumber1() {
  return number1;
 }
 public void setNumber1(BigDecimal number1) {
  this.number1 = number1;
 }
 @XmlElement(name="NUM2")
 public BigDecimal getNumber2() {
  return number2;
 }
 public void setNumber2(BigDecimal number2) {
  this.number2 = number2;
 }
}

@XmlRootElement(name="RESPONSE")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class MathResponse {
 private BigDecimal result;

 private boolean error;

 private String errorDescription;

 private int statusCode;

 private String statusDescription;
 @XmlElement(name="RESULT")
 public BigDecimal getResult() {
  return result;
 }
 public void setResult(BigDecimal result) {
  this.result = result;
 }
 @XmlElement(name="ERROR")
 public boolean isError() {
  return error;
 }
 public void setError(boolean error) {
  this.error = error;
 }
 @XmlElement(name="ERROR_DESC")
 public String getErrorDescription() {
  return errorDescription;
 }
 public void setErrorDescription(String errorDescription) {
  this.errorDescription = errorDescription;
 }
 @XmlElement(name="STAT_CD")
 public int getStatusCode() {
  return statusCode;
 }
 public void setStatusCode(int statusCode) {
  this.statusCode = statusCode;
 }
 @XmlElement(name="STAT_DESC",
                defaultValue="Success")
 public String getStatusDescription() {

  return statusDescription;
 }
 public void setStatusDescription(String statusDescription) {
  this.statusDescription = statusDescription;
 }
}

Thanks again,
Cristian
________________________________________
From: Sergey Beryozkin [sberyozk@progress.com]
Sent: 11 November 2009 12:33
To: users@cxf.apache.org
Subject: Re: JAXB xml response marshalling issue

Hi

Yes please. Just the method signature and the response class should do
Also, do you use deprecated HTTP or JAXRS binding ?

thanks, Sergey

----- Original Message -----
From: "Cristian Botiza" <Cristian.Botiza@endava.com>
To: <users@cxf.apache.org>
Sent: Wednesday, November 11, 2009 10:14 AM
Subject: JAXB xml response marshalling issue


Hi,
I've developed a simple RESTful service with CXF 2.2.4.
I use the HTTP transport, CXFServlet and Spring-based configuration. Everything works fine
except that when marshalling the response
into XML, the root element is auto-generated by CXF. More exactly, I get:

<ns1:sumResponse>
   <RESULT>100</RESULT>
   <STAT_CD>200</STAT_CD>
</ns1:sumResponse>

instead of the expected:
<RESPONSE>
  <RESULT>100</RESULT>
  <STAT_CD>200</STAT_CD>
</RESPONSE>

I can provide further details (code, Spring xml, web.xml) if needed.

Regards,
Cristian

________________________________
The information in this email is confidential and may be legally privileged. It is intended
solely for the addressee. Any opinions
expressed are mine and do not necessarily represent the opinions of the Company. Emails are
susceptible to interference. If you are
not the intended recipient, any disclosure, copying, distribution or any action taken or omitted
to be taken in reliance on it, is
strictly prohibited and may be unlawful. If you have received this message in error, do not
open any attachments but please notify
the EndavaIT Service Desk on (+44 (0)870 423 0187), and delete this message from your system.
The sender accepts no responsibility
for information, errors or omissions in this email, or for its use or misuse, or for any act
committed or omitted in connection with
this communication. If in doubt, please verify the authenticity of the contents with the sender.
Please rely on your own virus
checkers as no responsibility is taken by the sender for any damage rising out of any bug
or virus infection.

Endava Limited is a company registered in England under company number 5722669 whose registered
office is at 125 Old Broad Street,
London, EC2N 1AR, United Kingdom. Endava Limited is the Endava group holding company and does
not provide any services to clients.
Each of Endava Limited and its subsidiaries is a separate legal entity and has no liability
for another such entity's acts or
omissions. Please refer to the “Legal” section on our website for a list of legal entities.



Mime
View raw message