0

我现在正在学习 jax-ws。我定义了一个WebService:

用户服务.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 在服务器执行函数时为空。

我使用 wsimport 生成客户端代码。

..................................................... ......... 当我使用 QName 和 javax.xml.ws.Service 而不是 wsimport 时,它可以工作。

如果有人知道这件事,请告诉我。谢谢

4

1 回答 1

0

我在客户端和服务器应用程序中配置了 JAXBDataBinding。它有效。你可以再试一次。

于 2013-01-24T08:10:49.180 回答