代码之家  ›  专栏  ›  技术社区  ›  Arthur

关于实现非Java(PHP)端点使用的JAX-WS web服务的建议

  •  0
  • Arthur  · 技术社区  · 10 年前

    我是一名JavaSE程序员,正在探索如何实现JAX-WSWeb服务,以便与我们的web服务器集成。到目前为止,我还没有使用web服务的经验,因此希望得到每个人的专家意见。

    背景是我的公司内部使用JavaSE开发并托管了POS系统。我们正在计划电子商务功能,该功能将通过外部web开发公司以HTML/PHP实现,并托管在外部。

    因此,我们正在探索在我们的端点上实现JAX-WSWeb服务,以便与运行PHP端点的电子商务服务器集成。

    我做了一些研究,我的理解是:

    我现在想知道,在与正在构建我们电子商务平台的外部web开发公司讨论实施时,什么是正确的方法。大多数网站和论坛的示例都假设两个端点都使用Java,并且两个端点由同一个开发人员/团队实现。

    基于我有限的不足,我认为流程如下:

    1. 我/我的公司创建web服务(用Java编码web服务方法)
    2. 我/我的公司创建服务器程序
    3. 然后,从服务器程序的URI(http://:/md5WebService?wsdl)生成的wsdl被用作我们内部POS系统和外部电子商务平台之间的接口契约

    然后,实现电子商务平台的web开发公司使用wsdl在其一侧实现PHPSoapClient端点。

    在我们的内部POS系统需要使用外部web开发公司创建的web服务的情况下,他们会将wsdl传递给我,我使用它来调用它们。

    这是正确的方法吗?

    非常感谢。

    干杯 亚瑟

    2 回复  |  直到 7 年前
        1
  •  0
  •   Roman Vottner    10 年前

    在Java中,实际上有两种方法可以开始设计web服务。您可以先创建WSDL(Web服务描述语言)契约(契约优先方法),然后让Java或一些框架工具为您创建Java框架类,您可以使用这些类来实现每个操作的逻辑,或者您可以从代码优先方法开始,实现每个Web方法及其逻辑,然后让Java或一些外部框架工具生成 WSDL contract 为你。

    无论采用哪种方式开始,结果都应该非常相似,并且与平台无关。用于基于WSDL的web服务的标准消息格式是 SOAP (Simple Object Access Protocol) 这是基于 XML (eXtensible Markup Language) 其定义平台和编程语言无关。

    因此,在实现服务并为WS端点启动服务器之后,添加 ?wsdl 端点URL的末尾应该将WSDL契约返回给调用方,调用方可以用于为所需的编程语言创建客户端存根,这进一步简化了从web服务发送和接收消息的过程。然而,请注意,可能不需要创建存根文件,因为所有信息都可以直接从WSDL契约中解析。由于缺乏有关PHP的知识,我无法提供如何直接从PHP调用WS的详细信息,或者是否需要/建议创建存根文件。

    为了从服务调用其他WS,您需要在一个web方法中创建一个WS客户端,并调用远程WS提供的一个或多个操作,并在web方法中处理响应。

    因为我不确定你是否在使用像f.e。 Apache CXF 这里我没有给出任何代码示例。为了在服务中集成外部web服务,您还可以查看 Apache Camel 它为包括CXF在内的许多基于Java的框架提供集成支持。在这里,您的web服务被视为 Consumer 而需要调用的其他外部服务被处理为 Producers 。您的内部服务和外部服务之间的交互在此处建模为一个路径,您可以在该路径中应用各种 Enterprise Integration Patterns (EIP) 例如将响应中包含的多个元素拆分为不同的对象,您还可以并行处理这些对象。

    一般来说,如果您遵循代码优先的方法,那么所涉及的步骤的枚举看起来是正确的,但是正如前面提到的,您也可以首先定义合同。根据您对WSDL/XSD语法的了解(您对确切语法的了解越少,就越应该使用代码优先的方法),在您仍然开发实现的内部逻辑的同时,首先创建契约可能会更快地实现PHP端的集成。

        2
  •  0
  •   kingAm    10 年前
    it is possible to mix end-point technologies, and specifically in my case JAX-WS as our endpoint and PHP SoapClient on our e-commerece end-point PHP SOAP Client to consume JAX-WS with Basic Http Authentication Using PHP SoapClient with Java JAX-WS RI (Webservice)
    

    这正是引入Web服务概念的确切目的。您不必担心客户端和服务器是在哪种平台或语言上实现的。客户端和服务器只需按照wsdl中的约定交换xml消息(独立于平台)。

    继续你的理解。