Я успешно использовал 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>