me gustaría hacer una pregunta acerca de @UsesJAXBContext anotación en jax-ws. Intento que funcione en el lado del cliente, pero probablemente me esté perdiendo algo. Aquí es mi caso:Cómo configurar JAXBContext
Tengo servicio web con la operación:
@WebMethod(operationName = "putToQueue")
public boolean put(@WebParam(name = "queueName") String queueName, @WebParam(name = "element") Object element) {
return queues.get(queueName).offer(element);
}
En el cliente me genera QueueService y cola (puerto) ... y otras cosas ... [respones solicitudes. En este caso, es irrelevante.] Me gustaría que el usuario defina el objeto que él/ella podría poner en cola. Sin embargo, para invocar la operación ponga (...) Necesito vincular el objeto (que intento enviar) a JAXBContext. Podría hacerlo por @XmlSeeAlso en la parte superior del tallo de cola generado [probé este y funciona]. No obstante, necesito una solución más genérica que me ayude a unir objetos en tiempo de ejecución. Pensé que podría crear la anotación @QueueMessage y ClientJAXBContextFactory y agregar una clase marcada al contexto al crearlo.
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);
}
}
siguiente intenté uso @UsesJAXBContext en la parte superior de la cola generada.
@WebService(name = "Queue")
@UsesJAXBContext(ClientJAXBContextFactory.class)
public interface Queue {
...
}
Pero createJAXBContext (...) no se invoca y JAX-WS simplemente crear su JAXBContextImpl.
he leído:
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
y alguna cuestión en StackOverflow. Estaría agradecido por los consejos. ¿Es posible implementar la idea presentada en mi pregunta?
También podría agregar que en el lado del servidor ... @UsesJAXBContext funciona. Pero es importante para mí hacer que funcione en el lado del cliente.