将JAX-WS Web服务公开为spring bean

时间:2012-05-05 13:29:11

标签: spring jax-ws

这可能以某种方式将JAX-WS Web服务公开为spring bean吗?我需要将一些对象设置到我的实现类中,但我想用spring执行此操作。

1 个答案:

答案 0 :(得分:2)

您需要使用SpringBeanAutowiringSupport和Autowired注释从spring注入对象。创建一个端点类,它将像真正的Web服务一样工作,但是调用实际的实现方法会从您的Web服务接口开始,该接口是从spring注入的。

例如:

@WebService(targetNamespace = "http://my.ws/MyWs",
        portName = "MyWsService",
        serviceName = "MyWs",
        endpointInterface = "my.ws.MyWsService",
        wsdlLocation = "WEB-INF/wsdl/MyWs.wsdl")
public class MyWsEndpoint extends SpringBeanAutowiringSupport implements MyWsService {

    @Autowired
    private MyWsService proxy;

    public void myMethod() {
        proxy.myMethod();
    }

}

您的JAX-WS enpoint配置应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
    <endpoint
            name="MyWsService"
            implementation="my.ws.MyWsEndpoint"
            url-pattern="/services/MyWsService"/>
</endpoints>

在spring中定义真正的实现类,但要记住两者:您的端点类和实现类必须实现您的Web服务接口。

<bean id="myWsImpl" class="my.ws.MyWsImpl"/>

就是这样,现在您可以在JAX-WS Web服务中使用spring。