wss的Java配置对应:绑定?

wss的Java配置对应:绑定?,java,spring,jax-ws,Java,Spring,Jax Ws,好的,我在谷歌上搜索了几个小时,但没有成功。。。最后,我只能希望一些春天的魔术师能够阅读并回答这个问题 我正在将一个基于Spring2.x的旧web应用程序升级到Spring4.2.x,在添加新功能的同时,我决定完全放弃基于XML的配置。再说一次:我不希望项目中有任何SpringXML文件 我已经转换了几乎所有内容,但最后一件我无法解决的事情是找到正确的Java配置对应项: <ws:service id="MySoapService" bean="#ServiceImpl" /> &

好的,我在谷歌上搜索了几个小时,但没有成功。。。最后,我只能希望一些春天的魔术师能够阅读并回答这个问题

我正在将一个基于Spring2.x的旧web应用程序升级到Spring4.2.x,在添加新功能的同时,我决定完全放弃基于XML的配置。再说一次:我不希望项目中有任何SpringXML文件

我已经转换了几乎所有内容,但最后一件我无法解决的事情是找到正确的Java配置对应项:

<ws:service id="MySoapService" bean="#ServiceImpl" />
<wss:binding service="#MySoapService" url="/1.0/soap" />
所以我要做的是导出@WebService注释类,但是使用Java配置而不是XML

其他信息:

我尝试过使用SimpleJaxWsServiceExporter,但这给我留下了一个java.net.BindException:Address ready in use:bind,不管我使用的是什么端口

该应用程序有两个servlet:一个是用于新RESTAPI的普通SpringMVC调度程序,另一个是com.sun.xml.ws.transport.http.servlet.WSSpringServlet,它应该使上述JAX-ws服务可用

我试图用纯JAX-WSRI解决问题,没有CXF或任何其他库。应用程序已经足够大了…:


显然还没有解决办法在谷歌搜索了好几个小时后,我只找到了这张票:


查看它的日期和状态,并注意到开发人员甚至没有响应它,甚至一年过去了,我认为可以肯定地说JAX-WS Commons spring集成在可预见的未来将不支持Java配置。

显然还没有解决方案在谷歌搜索了好几个小时后,我只找到了这张票:


查看它的日期和状态,并注意到开发人员甚至没有对它做出响应,甚至一年过去了,我假设可以肯定地说,JAX-WS Commons spring integration在可预见的将来将不支持Java配置。

您可以通过注入端点和以下助手方法来实现这一点。请注意,我的方法对每个端点使用基类BaseEndpoint:

@Configuration
public WebserviceConfiguration {

    @Inject
    private FooEndpoint fooEndpoint;

    @Bean    
    public SpringBinding fooEndpoint() throws Exception {
        return bind(fooEndpoint, "ws/bar");
    }

    private SpringBinding bind(BaseEndpoint endpoint, String url) throws Exception {
        SpringService springService = new SpringService();
        springService.setBean(endpoint);
        SpringBinding binding = new SpringBinding();
        binding.setService(springService.getObject());
        binding.setUrl(url);
        return binding;
    }

}

您可以通过注入端点和以下helper方法来实现这一点请注意,我的方法为每个端点使用基类BaseEndpoint:

@Configuration
public WebserviceConfiguration {

    @Inject
    private FooEndpoint fooEndpoint;

    @Bean    
    public SpringBinding fooEndpoint() throws Exception {
        return bind(fooEndpoint, "ws/bar");
    }

    private SpringBinding bind(BaseEndpoint endpoint, String url) throws Exception {
        SpringService springService = new SpringService();
        springService.setBean(endpoint);
        SpringBinding binding = new SpringBinding();
        binding.setService(springService.getObject());
        binding.setUrl(url);
        return binding;
    }

}

看起来很结实。我会尝试这个,如果有效,我会改变这个被接受的答案。如果我能。。。所以这里的新手看起来很可靠。我会尝试这个,如果有效,我会改变这个被接受的答案。如果我能。。。所以这里是新手