Мне нужно развернуть один и тот же веб-сервис для каждого клиента. @javax.jws.WebService
использует Object
в качестве аргументов метода и возвращаемых типов (в результате <xs:anyType/>
в wsdl). Каждый экземпляр веб-службы развертывается вместе с jar клиента на пути к классам. Этот jar имеет известную структуру и содержит JAXB-аннотированные классы, которые клиент хочет обрабатывать через мой сервис.
Проблема в том, что когда клиент передает экземпляр своего класса как метод, контекст JAXB на стороне сервера демаршализирует его в какой-то странный узел xerces dom, потому что (насколько я понимаю) только во время развертывания @WebMethod
и @WebService
отсканированы аннотации, которые, как уже было сказано, имеют дело только с Object
.
Проще говоря, мне нужно указать JAXB на WEB-INF/lib/customer_classes_14586.jar
, что означает получение некоторого контроля над созданием JAXBContext
во время развертывания JAX-WS.
Возможно ли это вообще?
Подходят для серверных решений (Glassfish 3.1 со стеком metro ws)
UPDATE
Я упустил одну вещь, которая может быть важной: я развертываю эти веб-сервисы как пакеты OSGI во время выполнения через консоль веб-администратора. Когда я нажимаю кнопку развертывания, новый jar программно создается из библиотеки клиента, класса веб-сервиса, wsdl и манифестов. Поэтому я мог бы вмешаться в процесс сборки и предоставить подсказку на данный момент, если это поможет.