Java-配置 wss:binding 的对应物?
Java-config counterpart of wss:binding?
好的,这是我在谷歌上搜索了几个小时但没有成功的东西...最后我只能希望一些 Spring-magician 阅读并回答这个问题。 :)
我正在将一个旧的 Web 应用程序(基于 Spring 2.x)升级到 Spring 4.2.x,同时我决定添加新功能完全摆脱基于 XML 的配置。 (再说一次:我不想在项目中有任何 Spring XML 文件!)
我已经转换了几乎所有内容,但我无法解决的最后一件事是找到正确的 Java-config 副本:
<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
,但那个给我留下了 "java.net.BindException: Address already in use: bind",不管我使用的是什么端口...
应用程序有两个 servlet:一个是正常的 Spring 新 REST 的 MVC 调度程序 API 另一个 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 配置。
您可以通过注入端点和以下辅助方法来实现此目的(请注意,我的方法为每个端点使用基础 class 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;
}
}
好的,这是我在谷歌上搜索了几个小时但没有成功的东西...最后我只能希望一些 Spring-magician 阅读并回答这个问题。 :)
我正在将一个旧的 Web 应用程序(基于 Spring 2.x)升级到 Spring 4.2.x,同时我决定添加新功能完全摆脱基于 XML 的配置。 (再说一次:我不想在项目中有任何 Spring XML 文件!)
我已经转换了几乎所有内容,但我无法解决的最后一件事是找到正确的 Java-config 副本:
<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
,但那个给我留下了 "java.net.BindException: Address already in use: bind",不管我使用的是什么端口...应用程序有两个 servlet:一个是正常的 Spring 新 REST 的 MVC 调度程序 API 另一个
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 配置。
您可以通过注入端点和以下辅助方法来实现此目的(请注意,我的方法为每个端点使用基础 class 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;
}
}