java - 通过 Spring 创建具有可配置端点的 Web 服务

标签 java spring web-services

我有一个应用程序尝试使用通过 wsdl2java 生成的类来访问 Web 服务。我希望能够配置它,以便我可以根据环境(测试/生产)使用不同的端点。

我发现以下答案正是我正在寻找的 https://stackoverflow.com/a/3569291/346666

但是,我想使用 Spring 将服务实例注入(inject)到我的服务层中 - 是否有一种纯 Spring 方法来实现上述目的?

或者,是否有更好的方法将 Web 服务实例注入(inject)到类中,并且仍然能够动态配置端点?

最佳答案

使用基于 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 的配置结合使用,您只需将 HelloServiceConfig 注册为 Spring 上下文 xml 文件中的 bean:

<bean class="com.service.HelloServiceConfig.class"/>

<bean id="businessService" class="com.service.BusinessService">
     <property name="helloService" ref="helloService"/>
</bean>

在 Spring 中创建 Web 服务客户端的其他替代方法包括使用 Spring Web ServicesApache CXF 。这两个选项都允许仅使用 XML 来定义基于 wsdl2javaJAX-WS 客户端,但需要额外的依赖项。

关于java - 通过 Spring 创建具有可配置端点的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476762/

相关文章:

web-services - 在线 JSONP 转换器/包装器

java - Spring:为什么 "root"应用上下文和 "servlet"应用上下文是不同方创建的?

java.lang.NoClassDefFoundError : Could not initialize class org. jadira.usertype.dateandtime.joda.integrator.UserTypeJodaTimeHibernateIntegrator 错误

java - Android BufferedReader ReadLine() 得到 IOException - Expected a hex chunk size ,如何解决这个问题?

java - 使用 Spring EL 分割字符串

Spring 4 STOMP over Websockets - 如何正确设置登录名和密码

java - 运行 mvn clean install 应用程序尝试将 postgres 连接到错误的端口

java - 将 JSON 传递给 WebService

web-services - 如何在 websphere 5 的 web 服务客户端中配置 jks 证书

java - 从 shell 脚本返回字符串变量并将其保存到 Java