spring - ws Endpoint

@Endpoint
public class UserServiceEndpoint{
 
    @PayloadRoot(localPart="UserRequest",namespace="http://xxx.xxx.xxx/ws")
    public @ResponsePayload UserResponse getUsers(@RequestPayload UserRequest request){
        int userCount=request.getUserCount();
        String targetCompanyId=request.getTargetCompany();
        UserResponse response=new UserResponse();
        List<User> users=new ArrayList<User>();
        for(int i=0;i<userCount;i++){
            User user=new User();
            user.setBirthday(new Date());
            user.setCompanyId(targetCompanyId);
            user.setGender(true);
            user.setUsername("user"+i);
            users.add(user);
        }
        response.setUsers(users);
        return response;
    }
}

Spring-WS提供的Annotation

@Endpoint
表示當前這個類將作爲Spring-WS的一個Endpoint,它可以接收特定的用戶請求,執行其中的業務方法。

@PayloadRoot(localPart="UserRequest",namespace="http://xxx.xxx.xxx/ws")
表明當前這個getUsers方法支持Webservice以SOAP消息的XML root節點名及namespace來匹配找到該方法。SOAP消息body部分XML節點名爲UserRequest,同時採用http://xxx.xxx.xxx/ws作爲namespace的SOAP消息,一旦我們的客戶端發出的SOAP消息滿足上述條件就會執行這裏的getUsers方法。


@RequestPayload的Annotation,這就表示這個UserRequest值需要從客戶端請求的SOAP消息的Body當中解析出來,解析後的Body部分的XML要反序列化成這裏需要的UserRequest對象。最後在這個方法的返回值UserResponse前面我們還添加了一個名爲@ResponsePayload的Annotation,表示這個返回值將作爲響應的負載返回到Webservice調用客戶端。

 Endpoint編寫完成之後,接下來我們就可以將上述編寫XSD及Endpoint類配置到Spring環境當中。

<context:component-scan base-package="ws"></context:component-scan>
<sws:annotation-driven/>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章