繁体   English   中英

Java配置对应于wss:binding?

[英]Java-config counterpart of wss:binding?

好的,所以这是我已经搜查了好几个小时都没有成功的事情了……最后,我只能希望一些Spring-Magician能够阅读并回答这个问题。 :)

我正在将一个旧的Web应用程序(基于Spring 2.x)升级到Spring 4.2.x,并且在添加新功能的同时,我决定完全脱离基于XML的配置。 (再次:我不想在项目中有任何Spring XML文件!)

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

<ws:service id="MySoapService" bean="#ServiceImpl" />
<wss:binding service="#MySoapService" url="/1.0/soap" />

ws / wss命名空间来自:

xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"

所以我想做的是导出@WebService注释的类,但是使用Java-config而不是XML。

其他信息:

  • 我已经尝试过使用SimpleJaxWsServiceExporter ,但是无论我使用哪个端口, SimpleJaxWsServiceExporter我留下一个“ java.net.BindException:地址已在使用中:bind”。

  • 该应用程序具有两个servlet:一个是用于新REST API的常规Spring MVC Dispatcher,另一个是com.sun.xml.ws.transport.http.servlet.WSSpringServlet ,这应使上述JAX-WS服务可用。

  • 我正在尝试使用纯JAX-WS RI,没有CXF或任何其他库来解决问题。 该应用程序已经足够大了... :(

显然还没有解决方案(尚未?)-在经过几个小时的谷歌搜索之后,我只发现了这张票:

https://java.net/jira/browse/JAX_WS_COMMONS-134

查看它的日期和状态(并注意到开发人员甚至没有响应它,甚至一年过去了),我认为可以肯定地说,JAX-WS Commons spring集成在可预见的情况下将不支持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;
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM