2017-01-19 9 views
0

Служба JAX-WS, определенная с использованием @WebService и @WebMethod, использует JAXB для превращения XML в объект Java. Для большинства случаев использования это здорово!Возможно ли получить доступ к необработанному XML-запросу в JAX-WS без использования @WebServiceProvider?

Однако мне нужно связать с каким-то унаследованным кодом, написанным с использованием Axis 1, который работает исключительно с объектами org.w3c.dom.Element - другими словами, мне просто нужно просто преобразовать параметры прямо в XML, как только я их получу, что кажется ужасно неэффективным.

Поэтому я искал способ получения и возврата необработанного XML из службы JAX-WS, либо как строку, либо как объекты.

Я был в состоянии получить необходимые мне функции с помощью @WebServiceProvider и реализации интерфейса Provider<Source>, но это чувствует себя немного слишком низкого уровня за такие вещи я делаю - я не могу использовать @WebMethod для легко настроить маршрутизацию; вместо этого я должен получить PATH_INFO от WebServiceContext и поиграть со строкой, чтобы получить необходимую мне информацию.

Итак, мой вопрос: есть ли способ использовать необработанный XML (эффективно вырезать JAXB) в сервисе JAX-WS без снижения до уровня @WebServiceProvider?

ответ

0

Я просто наткнулся на ответ сам, так вот она для кого-то, кто имеет этот вопрос:

Как уже упоминалось в documentation, JAXB может маршала xsd:anyType в Object. Конкретным типом результирующего объекта является apache.xerces.internal.dom.ElementNSImpl, который представляет собой реализацию org.w3c.dom.Element - то есть именно то, что мне нужно!

Поэтому решение моей проблемы было просто использовать Object в качестве параметра и возвращаемых типов в моем методе. Не массовое чистое решение, но оно работает.