tôi muốn đặt câu hỏi về @UsesJAXBContext chú thích trong jax-ws. Tôi cố gắng làm cho nó hoạt động trên phía khách hàng nhưng tôi có thể thiếu một cái gì đó. Đây là trường hợp của tôi:Cách đặt JAXBContext tùy chỉnh
Tôi đã có webservice với hoạt động:
@WebMethod(operationName = "putToQueue")
public boolean put(@WebParam(name = "queueName") String queueName, @WebParam(name = "element") Object element) {
return queues.get(queueName).offer(element);
}
Về phía khách hàng i tạo QueueService và Queue (port) ... và các công cụ khác ... [respones yêu cầu. Trong trường hợp này không liên quan.] Tôi muốn cho phép người dùng xác định đối tượng mà họ có thể đưa vào hàng đợi. Tuy nhiên để gọi hoạt động đặt (...) Tôi cần đối tượng liên kết (mà tôi cố gắng gửi) vào JAXBContext. Tôi có thể làm điều đó bằng cách @XmlSeeAlso ở đầu hàng đợi được tạo ra [tôi đã thử cái này và nó hoạt động]. Tuy nhiên tôi cần giải pháp chung chung hơn giúp tôi ràng buộc đối tượng trong thời gian chạy. Tôi nghĩ rằng tôi có thể tạo chú thích @QueueMessage và ClientJAXBContextFactory và thêm lớp được đánh dấu vào ngữ cảnh khi tạo.
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);
}
}
Tiếp tôi đã cố gắng sử dụng @UsesJAXBContext trên đầu trang của tạo Queue.
@WebService(name = "Queue")
@UsesJAXBContext(ClientJAXBContextFactory.class)
public interface Queue {
...
}
Nhưng createJAXBContext (...) không gọi và JAX-WS chỉ đơn giản là tạo JAXBContextImpl mình.
Tôi đã đọc:
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
và một số câu hỏi về Stackoverflow. Tôi sẽ biết ơn những lời khuyên. Có thể triển khai ý tưởng được trình bày trong câu hỏi của tôi không?
Ngoài ra tôi có thể thêm điều đó ở phía máy chủ ... @UsesJAXBContext hoạt động. Nhưng điều quan trọng đối với tôi là làm cho nó hoạt động ở phía khách hàng.