我有一个应用程序尝试通过wsdl2java使用生成的类访问Web服务。我希望能够配置它,以便我可以根据环境使用不同的端点(TEST / PROD)。
我发现以下答案正是我所寻找的 https://stackoverflow.com/a/3569291/346666
但是,我想使用Spring将服务实例注入我的服务层 - 上面有一个纯粹的Spring方法吗?
或者,是否有更好的方法将Web服务实例注入类中,并且仍然能够动态配置端点?
答案 0 :(得分:1)
使用基于Spring Java的配置:
@Configuration
public class HelloServiceConfig {
@Bean
@Scope("prototype")
public HelloService helloService(@Value("${webservice.endpoint.address}") String endpointAddress) {
HelloService service = new HelloService();
Hello port = service.getHelloPort();
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,endpointAddress);
return service;
}
}
@Component
public class BusinessService {
@Autowired
private HelloService hellowService;
...
public void setHelloService(HelloService helloService) {
this.helloService = hellowService;
}
}
修改强>
要在基于Spring XML的配置中使用它,您只需要在Spring上下文xml文件中将HelloServiceConfig
注册为bean:
<bean class="com.service.HelloServiceConfig.class"/>
<bean id="businessService" class="com.service.BusinessService">
<property name="helloService" ref="helloService"/>
</bean>
在Spring中创建Web服务客户端的其他替代方法包括使用Spring Web Services或Apache CXF。这两个选项都允许基于JAX-WS
仅使用XML定义wsdl2java
客户端,但需要其他依赖项。