Я хотел бы задать вопрос о @UsesJAXBContext аннотация в jax-ws. Я пытаюсь заставить его работать на стороне клиента, но я, вероятно, что-то пропустил. Вот мой случай:Как установить пользовательский JAXBContext
У меня есть веб-сервиса с работы:
@WebMethod(operationName = "putToQueue")
public boolean put(@WebParam(name = "queueName") String queueName, @WebParam(name = "element") Object element) {
return queues.get(queueName).offer(element);
}
На стороне клиента я генерируемой QueueService и Queue (порт) ... и другие вещи ... [запросы акустический отклик. В этом случае не имеет значения.] Я хотел бы дать пользователю определить объект, который он/она может поставить в очередь. Однако для вызова операции put (...) Мне нужно связать объект (который я пытаюсь отправить) в JAXBContext. Я мог бы это сделать @XmlSeeAlso в верхней части сгенерированной очереди очередей [я пробовал этот, и он работает]. Тем не менее мне нужно более общее решение, которое помогает мне связывать объект во время выполнения. Я думал, что смогу создать @QueueMessage аннотация и ClientJAXBContextFactory и добавить выделенный класс в контекст при его создании.
public class ClientJAXBContextFactory implements JAXBContextFactory {
@Override
public JAXBRIContext createJAXBContext(SEIModel seim, List<Class> classes, List<TypeReference> references) throws JAXBException {
Reflections reflections = new Reflections("");
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(QueueMessage.class);
classes.addAll(annotated);
return JAXBContextFactory.DEFAULT.createJAXBContext(seim, classes, references);
}
}
Далее я попытался использовать @UsesJAXBContext на верхней части генерируемой очереди.
@WebService(name = "Queue")
@UsesJAXBContext(ClientJAXBContextFactory.class)
public interface Queue {
...
}
Но createJAXBContext (...) не вызывается и JAX-WS просто создать свой JAXBContextImpl.
Я прочитал:
http://weblogs.java.net/blog/jitu/archive/2008/08/control_of_jaxb.html
http://www.techques.com/question/1-5627173/Specify-JAXB-Packages-in-SLSB-and-JAX-WS
и какой-то вопрос на StackOverflow. Я был бы благодарен за советы. Возможно ли реализовать идею, представленную в моем вопросе?
Также я мог бы добавить, что на стороне сервера ... @UsesJAXBContext работает. Но для меня важно, чтобы он работал на стороне клиента.