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