Hi All,
I am trying to create a RESTful webservice using Jersey implementation.
Simultaneously I have the JAX-WS implementation for the webservice.
I have the java beans which have been generated using the xsd. I wish to reuse the same java beans for RESTful webservice.
The GET method works fine for me but if I try to implement a POST method, I am getting issues accepting the json string as java bean and the code breaks.
for instance:
my java bean:
package ws.test;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import ws.com.ProductType;
@XmlRootElement(name="VivekRESTClass")
@XmlAccessorType(XmlAccessType.FIELD)
public class VivekRESTClass {
public VivekRESTClass(){
}
public VivekRESTClass(String id,
List product) {
super();
this.id = id;
this.productType = product;
}
@XmlElement(required=true)
protected String id;
@XmlElement(required=true)
protected List productType;
public String getId() {
return id;
}
public void setSessionId(String id) {
this.id = id;
}
public List getProduct() {
return productType;
}
public void setProduct(List productType) {
this.productType = productType;
}
}
while my REST ful class looks like:
@Path("/VivekRESTClassImpl")
public class VivekRESTClassImpl{
private static final Logger logger = Logger.getLogger(VivekRESTClassImpl.class);
@POST
@Path("/testRESTPOST")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public VivekRESTClassOutput addItem(VivekRESTClass vivekRESTClass){
}
Now when I invoke my method using REST client, I pass a json i.e.
{"id":"22","productType":[{"name":"Vivek","quantity":3}]}
Ideally the json passed seems to be converted to java bean and then I can use the bean to get the values but now this is not happening.
I wonder if there is some configuration that needs to be done so that Jersey can work fine with the JAX-WS.
Any help will be appreciated.
Thanks
Vivek
I am trying to create a RESTful webservice using Jersey implementation.
Simultaneously I have the JAX-WS implementation for the webservice.
I have the java beans which have been generated using the xsd. I wish to reuse the same java beans for RESTful webservice.
The GET method works fine for me but if I try to implement a POST method, I am getting issues accepting the json string as java bean and the code breaks.
for instance:
my java bean:
package ws.test;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import ws.com.ProductType;
@XmlRootElement(name="VivekRESTClass")
@XmlAccessorType(XmlAccessType.FIELD)
public class VivekRESTClass {
public VivekRESTClass(){
}
public VivekRESTClass(String id,
List product) {
super();
this.id = id;
this.productType = product;
}
@XmlElement(required=true)
protected String id;
@XmlElement(required=true)
protected List productType;
public String getId() {
return id;
}
public void setSessionId(String id) {
this.id = id;
}
public List getProduct() {
return productType;
}
public void setProduct(List productType) {
this.productType = productType;
}
}
while my REST ful class looks like:
@Path("/VivekRESTClassImpl")
public class VivekRESTClassImpl{
private static final Logger logger = Logger.getLogger(VivekRESTClassImpl.class);
@POST
@Path("/testRESTPOST")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public VivekRESTClassOutput addItem(VivekRESTClass vivekRESTClass){
}
Now when I invoke my method using REST client, I pass a json i.e.
{"id":"22","productType":[{"name":"Vivek","quantity":3}]}
Ideally the json passed seems to be converted to java bean and then I can use the bean to get the values but now this is not happening.
I wonder if there is some configuration that needs to be done so that Jersey can work fine with the JAX-WS.
Any help will be appreciated.
Thanks
Vivek