JAX-WS: как заставить SOAP Response возвращать объект HashMap

Итак, у меня есть простой веб-сервис:

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

Книжный класс тоже прост:

public class Book
{
    private int id;
    private String title;

    public int getId()
    {
        return id;
    }

    public String getTitle()
    {
        return title;
    }
    public Book(int id, String title)
    {
        id = this.id;
        title = this.title;
    }
}

Теперь, когда вы вызываете этот веб-сервис в тестере браузера, я получаю:

Method returned
my.ws.HashMap : "my.ws.HashMap@1f3cf5b"

SOAP Request
  ...
  ...

SOAP Response

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:getBookListResponse xmlns:ns2="http://ws.my/">
            <return/>
        </ns2:getBookListResponse>
    </S:Body>
</S:Envelope>


Можно ли вернутьHashMap объект показан в<return> тег, что-то вроде

<return>
     <Book1>
          id=1
          title=title1
     </Book1>
</return>
<return>
     <Book2>
          id=2
          title=title2
     </Book2>
</return>

Причина, по которой я хочу получить значения в возвращаемых тегах, заключается в том, что на стороне клиента я использую jQuery AJAX на веб-странице для вызова этого веб-сервиса, а полученный в ответ XML-ответ просто пуст<return> теги. Как я могу получить реальную балансовую стоимость со стороны клиента AJAX?

Вот мой веб-код AJAX:

   $.ajax({
        url: myUrl, //the web service url
        type: "POST",
        dataType: "xml",
        data: soapMessage, //the soap message. 
        complete: showMe,contentType: "text/xml; charset=\"utf-8\""         

    });
function showMe(xmlHttpRequest, status)
{  (xmlHttpRequest.responseXML).find('return').each(function()
   { // do something
   }
}

Я протестировал простой веб-сервис Hello World, и это сработало.

Ответы на вопрос(3)

Ваш ответ на вопрос