Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WSDL和AXIS ADB_Java_Web Services_Soap_Wsdl_Axis - Fatal编程技术网

Java WSDL和AXIS ADB

Java WSDL和AXIS ADB,java,web-services,soap,wsdl,axis,Java,Web Services,Soap,Wsdl,Axis,如果我在WSDL文档中理解正确,我们可以简单地说: portype节:可与OO中的接口进行比较 语言,并描述服务提供的操作 绑定部分:指定操作可以通过哪些协议访问 (例如SMTP、HTTP等) 服务部分:表示定义的每个绑定的端点 如果我说错了,请纠正我 如果这是正确的,那么当我们使用AXIS ADB和Eclipse EE集成的AXIS工具创建客户机时,为什么在实例化存根时还需要提供URL作为服务的端点 MultiplierImplStub stub=newMultiplierImplStub

如果我在
WSDL
文档中理解正确,我们可以简单地说:

  • portype节:
    可与OO中的接口进行比较
    语言,并描述服务提供的操作

  • 绑定部分:
    指定操作可以通过哪些协议访问
    (例如SMTP、HTTP等)

  • 服务部分:
    表示定义的每个绑定的端点

如果我说错了,请纠正我

如果这是正确的,那么当我们使用AXIS ADB和Eclipse EE集成的AXIS工具创建客户机时,为什么在实例化存根时还需要提供URL作为服务的端点

MultiplierImplStub stub=newMultiplierImplStub("http://localhost:8080/ProductServer/services/MultiplierImpl");
存根(通过解析服务的WSDL自动构建)不应该已经知道端点是什么吗

编辑:

以及为什么客户端中指定的端点与
WSDL
中定义的任何端点都不匹配

<wsdl:service name="MultiplierImpl">
<wsdl:port name="MultiplierImplHttpSoap11Endpoint" binding="ns:MultiplierImplSoap11Binding">
<soap:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpSoap11Endpoint/"/>
</wsdl:port>
<wsdl:port name="MultiplierImplHttpSoap12Endpoint" binding="ns:MultiplierImplSoap12Binding">
<soap12:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpSoap12Endpoint/"/>
</wsdl:port>
<wsdl:port name="MultiplierImplHttpEndpoint" binding="ns:MultiplierImplHttpBinding">
<http:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpEndpoint/"/>
</wsdl:port>
</wsdl:service>

问得好!存根在生成时知道端点是什么,但在以后的过程中,这些端点可能会发生变化,您不希望再次手动重新生成存根并重新部署它,而只是更改应用程序中的配置参数。在运行时使用每个服务调用重新生成存根也不是一个好主意,我相信您会同意的

由于多种原因,提供端点的能力非常方便:有时您在实现时无法实时访问web服务,并且WSDL在工作开始之前被用作双方团队之间的相互协议。此时可能会知道最终的URL。此外,在预生产和生产之前,您可能需要在不同的环境中进行测试-这可以通过触摸配置轻松实现,而不是在应用程序中针对每个环境使用不同的存根和不同的逻辑


WSDL中的端点对于web服务的可发现性非常重要,因为服务已经在生产中,并且预期不会发生端点更改。它简化了新客户机使用web服务的过程。但即便如此,将端点视为一个变量也很好,因为它增加了灵活性,以防万一。

我看到了它,但我有点困惑。你不是说你提供了有问题的URL吗?如果URL已自动为您填写,可能您的配置不匹配。我自己在实例化存根时对URL提出了质疑,我也有点困惑。我还注意到删除该URL没有任何区别,客户端总是工作正常。嗯,可能有一个默认的端点URL,它是在生成存根时设置的(它来自WSDL——如果存根知道端点,它会回答您的问题)。当您删除手动放置的URL时,它将通过默认设置。更仔细地研究生成的代码,看看它是如何获得端点地址的。