JAX-WS: How to make a SOAP Response return a HashMap object

前端 未结 3 1114
天涯浪人
天涯浪人 2020-12-10 17:34

So I have a simple web service:

    @WebMethod(operationName=\"getBookList\")
    public HashMap getBookList()
    {
        HashMap

        
3条回答
  •  被撕碎了的回忆
    2020-12-10 18:00

    In order to help JAXB, you can 'wrap' your HashMap in a class and use the @XmlJavaTypeAdapter to make your custom serialization of the map to XML.

    public class Response {
    
        @XmlJavaTypeAdapter(MapAdapter.class)    
        HashMap books;
    
        public HashMap getBooks() {
            return mapProperty;
        }
    
        public void setBooks(HashMap map) {
            this.mapProperty = map;
        }
    
    }
    

    Then use this class as a return value of your WebMethod

    @WebMethod(operationName="getBookList")
        public Response getBookList()
        {
             HashMap books = new HashMap();
             Book b1 = new Book(1,"title1");
             Book b2 = new Book(2, "title2");
             books.put(1, b1);
             books.put(2, b2);
             Response resp = new Response();
             resp.setBooks(books);
             return resp;
        }
    

    After all, you need to implement your adapter MapAdapter. There is several ways to do this, so I recommend you to check this

提交回复
热议问题