I am trying to consume json object in rest service,and convert it to local bean pojo jaxb class and use it for further processing.
Here is my webservice code:
@POST
@Path("login1")
@Consumes(MediaType.APPLICATION_JSON)
public String login1(LoginJSON data)
{
try
{
System.out.println("request received for user"+data.username);
System.out.println("pass: "+data.password);
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
Here is pojo class:
@XmlRootElement
public class LoginJSON
{
@XmlElement(required=true)
public String username;
@XmlElement(required=true)
public String password;
public LoginJSON()
{
super();
// TODO Auto-generated constructor stub
}
public LoginJSON(String username, String password)
{
super();
this.username = username;
this.password = password;
}
public String getUsername()
{
return username;
}
@XmlElement
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
@XmlElement
public void setPassword(String password)
{
this.password = password;
}
}
web.xml is :
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.myapp.webservices</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Webservice client is sending a json object with both user and password attribute.Error I am getting is :
INFO: No default constructor found on class
com.myapp.webservices.LoginJSON
java.lang.NoSuchMethodException: com.myapp.webservices.LoginJSON.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at com.sun.xml.internal.bind.v2.ClassFactory.create0(Unknown Source)
....
How do I resolve this any suggestions?
Remove the constructors used in the class LoginJSON
public LoginJSON() { super(); // TODO Auto-generated constructor stub } public LoginJSON(String username, String password) { super(); this.username = username; this.password = password; }
Let the class to use the default constructor, otherwise the json won't be parsed to LoginJSON.