get complex type in web service client
argol1278 Aug 6, 2008 8:39 AMWhene i invoke web service in client application i have java.lang.NullPointerException.
In log in SOAP message there are values but client can't get them. This is what i have done:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Users",namespace="http://webServices.ejb/" ,propOrder = { "userid","name","surname","login",
"password","status","email" })
@XmlRootElement(namespace="http://webServices.ejb/", name = "test")
public class Users implements Serializable{
@XmlElement(namespace="http://webServices.ejb/",name="userid")
private int userid;
@XmlElement(namespace="http://webServices.ejb/")
private String name;
@XmlElement(namespace="http://webServices.ejb/")
private String surname;
@XmlElement(namespace="http://webServices.ejb/")
private String login;
@XmlElement(namespace="http://webServices.ejb/")
private String password;
@XmlElement(namespace="http://webServices.ejb/")
private int status;
@XmlElement(namespace="http://webServices.ejb/")
private String email;
@XmlTransient
private Set addresses = new HashSet(0);
@XmlTransient
private Set accounts = new HashSet(0);
public Users() {
}
public int getUserid() {
return this.userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getLogin() {
return this.login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public Set getAccounts() {
return accounts;
}
public void setAccounts(Set accounts) {
this.accounts = accounts;
}
public Set getAddresses() {
return addresses;
}
public void setAddresses(Set addresses) {
this.addresses = addresses;
}
}
@Stateless(mappedName = "UsersOperations")
@WebService(name = "UsersOperations")
public class UsersOperations implements UsersOperationsEjbRemote, UsersOperationsEjbLocal {
/**
* Default constructor.
*/
public UsersOperations() {
// TODO Auto-generated constructor stub
}
@WebMethod
public Users test(@WebParam(name = "userid") int userid){
// Hibernate query
Users u = queryUserDetails(userid);
System.out.println(u.getLogin());
return u;
}
}
CLIENT
@WebService(name = "UsersOperations", targetNamespace = "http://webServices.ejb/")
@XmlSeeAlso({bankDB.Users.class})
public interface UsersOperations {
@WebMethod
@WebResult(targetNamespace = "http://webServices.ejb/")
public Users test(@WebParam(name = "userid") int userid);
}
@WebServiceClient(name = "UsersOperationsService", targetNamespace = "http://webServices.ejb/", wsdlLocation = "http://127.0.0.1:8080/Bank-BankEJB/UsersOperations?wsdl")
public class UsersOperationsService
extends Service
{
private final static URL UsersOperationsService_WSDL_LOCATION;
static {
URL url = null;
try {
url = new URL("http://127.0.0.1:8080/Bank-BankEJB/UsersOperations?wsdl");
} catch (MalformedURLException e) {
e.printStackTrace();
}
UsersOperationsService_WSDL_LOCATION = url;
}
public UsersOperationsService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public UsersOperationsService() {
super(UsersOperationsService_WSDL_LOCATION, new QName("http://webServices.ejb/", "UsersOperationsService"));
}
/**
*
* @return
* returns Notification
*/
@WebEndpoint(name = "UsersOperationsPort")
public UsersOperations getUsersOperationsPort() {
return (UsersOperations)super.getPort(new QName("http://webServices.ejb/", "UsersOperationsPort"), UsersOperations.class);
}
// invoke web service in client UsersOperationsService service = newUsersOperationsService(); UsersOperations ejb = service.getUsersOperationsPort(); Users u = ejb.test(2);