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

关于实现非Java(PHP)端点使用的JAX-WS web服务的建议,java,php,web-services,jax-ws,soap-client,Java,Php,Web Services,Jax Ws,Soap Client,我是一名JavaSE程序员,正在探索如何实现JAX-WSWeb服务,以便与我们的web服务器集成。到目前为止,我还没有使用web服务的经验,因此我希望得到每个人的专家意见 背景是我的公司有一个POS系统,它是使用JavaSE在内部开发和托管的。我们正在计划通过外部web开发公司以HTML/PHP实现电子商务功能,并在外部托管 因此,我们正在探索在端点上实现JAX-WSWeb服务,以便与运行PHP端点的电子商务服务器集成 我做了一些研究,我的理解是: 在没有JavaEE容器的情况下实现JAX-W

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

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

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

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

  • 在没有JavaEE容器的情况下实现JAX-WS是可能的

  • 可以混合使用端点技术,特别是在我的例子中,JAX-WS作为我们的端点,PHP SoapClient作为我们的电子商务端点

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

基于我有限的替补研究,我推测过程将是:

  • 我/我的公司创建web服务(用Java编写web服务方法)
  • 我/我的公司创建服务器程序
  • 然后,从我的服务器程序的URI(http://:/md5WebService?wsdl)生成的wsdl被用作内部POS系统和外部电子商务平台之间的接口契约
  • 然后,实现电子商务平台的web开发公司使用wsdl来实现PHP SoapClient端点

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

    这是正确的方法吗

    非常感谢

    干杯,
    Arthur

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

    无论从哪种方式开始,结果都应该非常相似,并且与平台无关。用于基于WSDL的web服务的标准消息格式是基于定义平台和编程语言中立的消息格式

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

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

    因为我不确定您是否使用了f.e.之类的(Java)框架,所以这里我没有给出任何代码示例。为了将外部web服务集成到您的服务中,您还可以看看哪些服务为包括CXF在内的许多基于Java的框架提供集成支持。在这里,您的web服务被视为
    使用者
    ,而您需要调用的其他外部服务则被视为
    生产者
    。您的内部和外部服务之间的交互在这里是在一个路由中建模的,在这个路由中,您可以应用各种方法,比如将响应中包含的多个元素拆分为不同的对象,您还可以并行处理这些对象

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

    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)
    
    这正是引入webservice概念的目的。您不必担心您的客户机和服务器是在哪个平台或语言上实现的。客户机和服务器只需交换wsdl中约定的xml消息(独立于平台)


    继续理解。

    非常感谢Roman提供的详细说明和参考资料链接。干杯。谢谢金姆确认我的理解。干杯