Как получить объект вместо XML от отдыхающего клиента Jeresy - PullRequest
1 голос
/ 22 февраля 2011

Я написал Джерси Restful WS и развернул ее на Tomcat.

public class MyController {
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/getMetricsByClientId/{clientId}")
public BatchProgressMetricsListRoot getAllBatchProgressMetricsForClient(@PathParam("clientId") String clientId) { 
//dosomething
}

Находясь на стороне клиента, я звоню

webResource = client.resource(metricsCaptureUrl);  
batchProgressMetrics = webResource.get(BatchProgressMetricsListRoot.class);  
System.out.println(batchProgressMetrics);  

Теперь я получаю объект, но со значениями по умолчанию. Когда я пробую это из браузера, я получаю XML с правильным значением. Теперь, если я дам

webResource = client.resource(metricsCaptureUrl);  
batchProgressMetrics = webResource.get(String.class);  
System.out.println(batchProgressMetrics);  

Он печатает правильный xml. У меня вопрос, есть ли способ получить объект обратно, а не в виде строки? Если нет, то можете ли вы предложить мне какой-нибудь xml-фреймворк, который я могу использовать для создания объекта вручную?

Спасибо, Аджай

1 Ответ

3 голосов
/ 22 февраля 2011

У меня вопрос, есть ли способ, которым я могу вернуть объект, а не как строка

Нет. Когда вы аннотируете свой веб-сервис с помощью:

@Produce(MediaType.APPLICATION_XML)

Вы фактически указываете содержание вашего ответа, то есть XML. Службы REST используют многие существующие функции протокола HTTP, поэтому вы просто не можете вернуть объекты Java - как в Corba или EJB.

Если вы хотите десериализовать свои объекты из XML в Java в своем клиентском коде, вы можете выбрать одну из многих сред: JAXB, XStream являются наиболее популярными. Рекомендуется использовать одну и ту же платформу сериализации как на клиенте, так и на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...