Почему пространство имен xml является обязательным для веб-сервиса Java EE в Payara 5? - PullRequest
0 голосов
/ 09 июля 2020

Я успешно использовал Java EE Webservice без пространства имен в XML теле с Payara 4:

    @RESTful
    @Secured
    @POST
    @Path("{module: [a-zA-Z][a-zA-Z0-9_$]*}")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    public StreamingOutput post(@PathParam("module") String module, JAXBElement<Application> application) {

Этот веб-сервис можно было вызывать без пространства имен

curl -X "POST" "http://localhost/application/module/Address"         -H -u "user:password" "Content-Type: application/xml" -d $'<?xml version="1.0" encoding="UTF-8"?>
<application>
  <modules>
    <module id="25" />
  </modules>
</application>

Однако после обновления to Payara 5 я получаю объект Application с пустым Modules, то есть без ошибок или исключений, но член Modules равен null. Я получаю эту работу только с установкой пространства имен в теле и думаю, что мне не хватает аннотации для объявления пространства имен по умолчанию, но в настоящее время я не могу найти правильный синтаксис.

Это работает:

curl -X "POST" "http://localhost/application/module/Address"         -H -u "user:password" "Content-Type: application/xml" -d $'<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://www.custom-namespace.com/application">
  <modules>
    <module id="25" />
  </modules>
</application>

...