2013-01-24 45 views
0

我現在正在學習jax-ws。 我定義一個WebService:用戶定義參數的jax-ws

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(); 
    } 
} 

User.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來生成客戶端代碼。

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

如果有人知道這個請告訴我。謝謝

回答

0

我在客戶端和服務器應用程序中配置了JAXBDataBinding。它工作正常。您可以再試一次。

相關問題