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, и это сработало.