【问题标题】:generate WSDL from java WS从 java WS 生成 WSDL
【发布时间】:2010-08-07 04:07:33
【问题描述】:

给定一个公共 SOAP Web 服务并且没有 WSDL,我需要构建一个可以与该服务通信的 .NET 客户端。

我是一名 .NET 开发人员,正在寻找一种简单的方法来在给定此 url 的情况下生成 WSDL 文件?我更喜欢直接从我的 Windows 开发机器上使用一些工具来执行此操作,但我发现的唯一东西是 Apache CXF 或 Axis2 中的 javatowsdl 工具。是否有任何工具(商业或其他)可以做到这一点?我真的希望不要自己写自己的 WSDL。

如果我必须走 javatowsdl 的路线,是否可以使用此工具而无需设置服务器来运行 apache/tomcat 等?有人知道实际完成这项工作所需的步骤吗?

更新: 本知识库介绍了通过 wsdl.exe 或 VS 生成代理,这两种方法我都做过。这个 KB 的有趣部分是它在顶部提到使用 IBM 的 WSTK 来首先获取 WSDL 的部分。 WSTK 不再存在,我正在寻找替代品。 http://support.microsoft.com/kb/307324希望这有助于澄清一些事情。

【问题讨论】:

    标签: java .net wsdl webservice-client


    【解决方案1】:

    我没有看到提到这一点,但是您是否尝试过将“?wsdl”附加到soap url 的末尾并在浏览器中尝试?

    例如,服务的 url 是http://www.someserver.com/service/NewService。然后你可以在任何网络浏览器中尝试这个,看看它是否有效

    http://www.someserver.com/service/NewService?wsdl
    

    如果浏览器拉起 wsdl,那么您也可以使用相同的 url 访问 wsdl.exe,它会为您生成 .NET 客户端存根。

    【讨论】:

    • 希望这行得通。如果是这样,你只是为他省去了一大堆痛苦。另外,如果?wsdl 不起作用,请尝试?WSDL
    • 是的,我试过了。我从他们那里得到的文档也明确表示他们不提供 wsdl。他们不是很好。 :)
    【解决方案2】:

    假设您使用的是 Visual Studio,请右键单击您的项目并单击 Add Web Reference。然后输入端点 URL,你应该从这里开始。更多详情here

    【讨论】:

    • 是的,这是我尝试的第一件事。但是,我的理解是 VS 基于 WSDL 为您生成代理,正如我所指出的,该服务没有。
    【解决方案3】:

    不确定您真正想要从...创建 WSDL 吗?您说这是关于没有 WSDL 的公共 SOAP 服务 - 这意味着该服务本身并不提供 WSDL,对吧?

    那么您对这项服务的具体了解有哪些?因为,如果你只知道调用服务的 URL 而没有任何额外的规范(同样,如果服务没有发布它本身就是 WSDL,就像在带有附加 ?wsdl 的同一个 URL 上),我猜你不知道真的没有任何基础来创造一些东西。

    所以我猜这里需要更多信息......

    【讨论】:

    • 不,该服务没有 WSDL。我有什么?这是个好问题。我有一个 PDF 规范,它应该包含所有方法和参数,并且我有一个部分(且不准确的)xsd 架构文件。
    • 好吧,在那种情况下,我无法想象有任何工具可以为您完成这项工作 - 因为您至少需要 some 之类的明确定义的(即自动处理的)规范使这成为可能。 XSD 已经是一个好的开始,但如果它不像你说的那样不完整和不准确……像 javatowsdl 这样的工具还需要某种现有的 Java 接口/实现来从……创建 WSDL。
    • 链接中引用的 WSTK 应该能够检查 java 接口并生成一个 wsdl,但不再存在。显然,apache axis2 或 CXF 有一个叫做 java2wsdl 的东西,它也可以做类似的事情。但是,我不清楚使用该工具的要求是​​什么,以及它是否运作良好。因此,具体的问题仍然是,是否有人知道在 Windows 上工作的工具将检查 java 接口以生成 wsdl,或者是否有人具体知道如何在 apache 中使用 java2wsdl 工具(它可以从 Windows 运行)?跨度>
    【解决方案4】:

    here 解释了 Java2WSDL 的用法。它需要描述 Web 服务的 Java 类或接口 才能进行翻译(即,您不能只给它一个 SOAP 请求/响应并希望它能够从那里解决)。 WSDL2Java 可以在给定 WSDL 时生成 Java 客户端绑定(如果您想编写 .NET Web 服务客户端,这可能没用)。所有这些都可以在不运行 Java 应用程序服务器的情况下完成(因为您实际上并不是在托管 Web 服务,您只是在描述它的输入和输出)。

    因此,如果您想走这条路,您需要做的是用 Java 开发服务器端接口,并使用 Java2WSDL 生成 WSDL。从那里,您可以根据您链接的知识库文章将 WSDL 输入 Visual Studio。

    我现在可以向你保证,它会很巧妙地让接口正确。无论您是否可以正确地获取输入和输出,仍然存在 Document 与 RPC 以及各种其他参数的问题,这些参数在查看 SOAP 请求/响应时可能并不明显。

    【讨论】:

    • 是的,从我的附加阅读中我认为你是对的。谁知道这会如此痛苦。并且认为我认为互操作的想法是让它变得简单。 :) 对于您的笔记,我认为手动执行此操作比试图站在我的头上生成一个您所描述的 wsdl 的脑损伤更容易。
    【解决方案5】:

    who 经过大量阅读和研究,我发现了这个小宝石:http://wscfblue.codeplex.com/ 它采用 XSD 并生成了一个 WSDL 文件,如果您选择还可以生成代理代码。我还没有端到端地完成所有工作,但我想我会为其他任何可能有类似问题的人继续发帖。如果我记得,我会在完成后发回任何关于此的注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多