在WSDL中使用多个端口创建Web服务

时间:2017-10-12 07:35:09

标签: java web-services soap wsdl

我有一个关于使用多个端口从wsdl进行Web服务的问题。 WSDL看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions ...>
...
    <wsdl:service name="SomeService">
        <wsdl:port name="port1" binding="tns:port1">
            <soap:address location="http://example.com/port1"/>
        </wsdl:port>
        <wsdl:port name="port2" binding="tns:port2">
            <soap:address location="http://example.com/port2"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

如您所见 - 一个服务中有两个端口。但是在wsimport源生成之后,当我打开我的服务wsdl(http://localhost/myapp/SomeService?wsdl)时,我只看到其中一个端口:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions ...>
...
    <wsdl:service name="SomeService">
        <wsdl:port name="port1" binding="tns:port1">
            <soap:address location="http://example.com/port1"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

有没有人有任何想法如何使用多个端口?

1 个答案:

答案 0 :(得分:1)

最后我得到了答案there - 将sun-jaxws.xml文件添加到我的项目中。

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint 
    name="port1" 
    implementation="my.package.port1class" 
    interface="my.package.port1interface" 
    wsdl="WEB-INF/wsdl/wsdl.xml" 
    service="{http://localhost.com/}Service" 
    port="{http://localhost.com/}port1" 
    url-pattern="/service"/>
<endpoint 
    name="port2" 
    implementation="my.package.port2class" 
    interface="my.package.port2interface" 
    wsdl="WEB-INF/wsdl/wsdl.xml" 
    service="{http://localhost.com/}Service" 
    port="{http://localhost.com/}port2" 
    url-pattern="/service"/>
</endpoints>