Как получить доступ к XML-сообщению в JaxRs

#xml #jax-rs

#xml #jax-rs

Вопрос:

У меня есть мой хук в виде

 @POST
@Path("add")
@Produces("text/html")
@Consumes("application/xml")
public String addCustomer(SiebelMessage siebMsg) {
  // TODO: Log the XML message here
  return siebMsg.getAccount().get(0).getHomePage(); // works
  }
}
  

Я хочу зарегистрировать фактическое XML-сообщение в локальной файловой системе, как мне получить доступ.

Комментарии:

1. удалось ли вам найти ответ?

Ответ №1:

Если вы используете jersey, вы могли бы использовать LoggingFilter, предоставляемый Джерси (или вдохновиться этим для реализации вашего фильтра, который делает что-то подобное), если вы не хотите зависеть от конкретного API реализации, вам придется использовать JAXB для записи XML для SiebelMessage.

Комментарии:

1. Спасибо, но я хочу получить доступ к XML, который я отправляю в теле HTTP в виде POST, тем же методом: AddCustomer(). например, я смог изменить метод для автоматического ввода контекстной информации, как показано ниже.`code’ общедоступная строка AddCustomer(SiebelMessage siebMsg,@Context UriInfo ui ) { System.out.println(ServletContext); MultivaluedMap<Строка, String> Параметры запроса = ui.getQueryParameters(); Многозначная карта<Строка, String> Параметры пути = ui.getPathParameters(); возвращает siebMsg.getListOfSitAccountUpdateBmc().getAccount().get(0).getHomePage(); } ‘код’

Ответ №2:

В CXF вам нужно получить доступ к MesageContext

http://svn.apache.org/repos/asf/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java

Для этого используется метод getHttpServletRequest(). Первоначальный способ CXF заключается в

 ((BindingProvider)proxy).getRequestContext()
  

Но вы можете использовать аннотацию @Context

http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-Contextannotations

Ответ №3:

Составные данные / форма- это хитрость, как в следующем

     @POST
@Path("addCustomer")
@Produces("multipart/form-data")
@Consumes({"multipart/form-data"}) 
public String addCustomer(String formData) {
  System.out.println("The formDatan"   formData);
  return "SEEYA";
}
  

Следующая часть посвящена тому, как разархивировать XML в Pojo. это другая тема.