Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置自定义JAXBContext_Java_Jaxb_Annotations_Jax Ws_Java Metro Framework - Fatal编程技术网

Java 如何设置自定义JAXBContext

Java 如何设置自定义JAXBContext,java,jaxb,annotations,jax-ws,java-metro-framework,Java,Jaxb,Annotations,Jax Ws,Java Metro Framework,我想问一个关于jax-ws中注释的问题。我试图让它在客户端工作,但我可能错过了一些东西。我的情况如下: 我有网络服务和操作: @WebMethod(operationName = "putToQueue") public boolean put(@WebParam(name = "queueName") String queueName, @WebParam(name = "element") Object element) { return queues.get(queueName).

我想问一个关于jax-ws中注释的问题。我试图让它在客户端工作,但我可能错过了一些东西。我的情况如下:

我有网络服务和操作:

@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中。我可以这样做 @XMLSEE也位于生成的队列存根的顶部[我尝试了这个,它很有效]。尽管如此,我需要更通用的解决方案来帮助我在运行时绑定对象。 我认为我可以创建@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);
    }
}
但是createJAXBContext(…)没有被调用,jax-ws只是简单地创建他的JAXBContextImpl

我读过:

还有一些关于stackOverFlow的问题。我将非常感谢您的建议。 有可能实现我问题中提出的想法吗


我还可以在服务器端添加它@使用AXBContext工作。但对我来说,让它在客户端工作是很重要的。

好的,我可以处理我所面临的问题。但我仍然无法将@UsesJAXBContext与使用Web服务的客户端一起使用。但我发现这个注释与具有后期修复功能的bean绑定在一起。因此有一个类UsesJAXBContextFeature

它可以作为端口或服务(自jax ws 2.2以来的服务)的参数传递。我在版本方面遇到了一些问题,所以我决定生成类并使用jax ws 2.1。现在我只需创建如下端口:

new QueueService().getQueuePort(new UsesJAXBContextFeature(new ClientJAXBContextFactory()));
而且它有效

new QueueService().getQueuePort(new UsesJAXBContextFeature(new ClientJAXBContextFactory()));