java - 是否可以仅从 wsdl 文件创建 Web 服务客户端?

标签 java web-services wsdl apache-axis

我正在创建一个网络服务客户端。我使用 WSDL 文件来生成客户端 stub 。 但现在我必须对 Web 服务进行身份验证并调用方法。 我已经检查了一些关于如何完成此操作的教程,但它们总是解释生成客户端代码和服务器代码,然后让它们一起工作。

我想知道验证和调用请求所需的所有信息是否都包含在 WSDL 文件中(以及自动生成的代码)?或者我还必须了解网络服务代码吗?

感谢任何帮助。

最佳答案

一般来说,WSDL 就可以满足您的需要(假设它是由知道自己在做什么的人编写的)。

编写良好的 WSDL 应该具有合理的方法和参数名称,以便生成的客户端绑定(bind)或多或少是不言自明的。通过<annotation><documentation></documentation></annotation>属性,应添加注释以解决任何歧义。换句话说,将 WSDL 视为 JavaDoc API 页面。您不需要关心黑匣子里面有什么,只要知道需要放入什么以及从中得到什么即可。

对于身份验证机制,实际上有两种情况需要考虑:Web 服务级别身份验证和应用程序服务器级别身份验证。

在应用程序服务器级别(例如 Tomcat 或 GlassFish),WSDL 不会向您提供所使用的身份验证方法的指示(因为 WSDL 位于应用程序服务器之上的级别)。在这种情况下,您可以通过在浏览器中访问 WSDL 文件(或者尝试调用 SoapUI 中的服务)来尝试调试,并查看需要进行身份验证的内容。

在 Web 服务级别,安全机制应在 WSDL 中描述。我不知道有任何 IDE 可以自动识别 WSDL 中描述的身份验证机制,然后提示您需要提供什么(尽管我实际上只使用 NetBeans)。但是,您应该能够解决这个问题 - 通过检查 WSDL 或查看您的 Web 服务客户端在您尝试访问 protected 资源时发出的错误消息。

关于java - 是否可以仅从 wsdl 文件创建 Web 服务客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371616/

相关文章:

java - MVVM 数据绑定(bind)验证

java - 如何使用外部绑定(bind)文件覆盖 JAXB 中的默认名称?

将 WSDL 中定义的响应反序列化为空消息时,WCF 使用 SOAP 会出错

wsdl - 如何将 WSDL 文件转换为类文件

java - Spring Boot上传永久文件

java - 在排序双向链表中添加方法 - java

Java-webservice : Glassfish3. 0 错误 "org.codehaus.jackson.jaxrs.JacksonJsonProvider"

asp.net - 单个域上的两个 Web 应用程序

java - 将拦截器链添加到 JAX WS 提供程序

java - wsdl 绑定(bind)未定义