0

私は今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 を使用すると動作します。

誰かがこれについて知っているなら教えてください。ありがとう

4

1 に答える 1

0

クライアントおよびサーバー アプリケーションで JAXBDataBinding を構成します。動作します。もう一度お試しください。

于 2013-01-24T08:10:49.180 に答える