私は今jax-wsを勉強しています。そして、WebService を定義します。
UserService.java
@WebService
//@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL)
public interface UserService {
@WebMethod
public User modifyUserInfo(@WebParam(name="user")User user);
@WebMethod
public User queryUserInfo(@WebParam(name="username")String username);
}
UserServiceImpl.java
@WebService(endpointInterface="UserService")
public class UserServiceImpl implements UserService{
@Override
public User modifyUserInfo(User user) {
System.out.println(user); //it prints "null"
UserTransaction trans = new ModifyUserInfoTransaction(user);
trans.execute();
return trans.getResult();
}
@Override
public User queryUserInfo(String username) {
UserTransaction trans = new QueryUserInfoTransaction(username);
trans.execute();
return trans.getResult();
}
}
ユーザー.java
@XmlRootElement
public class User {
public enum UserType {
Normal, Root;
}
private String username;
private String password;
private UserType usertype;
public User() {
usertype = UserType.Normal;
}
//the getters and sertters....
}
クライアントで queryUserInfo() を呼び出すと、機能します。ただし、modifyUserInfo() を呼び出すと、パラメーター user は、サーバーが関数を実行するときに null になります。
wsimport を使用してクライアント コードを生成します。
................................................................... .... wsimport ではなく、QName と javax.xml.ws.Service を使用すると動作します。
誰かがこれについて知っているなら教えてください。ありがとう