关于实现非Java(PHP)端点使用的JAX-WS web服务的建议
我是一名JavaSE程序员,正在探索如何实现JAX-WSWeb服务,以便与我们的web服务器集成。到目前为止,我还没有使用web服务的经验,因此我希望得到每个人的专家意见 背景是我的公司有一个POS系统,它是使用JavaSE在内部开发和托管的。我们正在计划通过外部web开发公司以HTML/PHP实现电子商务功能,并在外部托管 因此,我们正在探索在端点上实现JAX-WSWeb服务,以便与运行PHP端点的电子商务服务器集成 我做了一些研究,我的理解是:关于实现非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
- 在没有JavaEE容器的情况下实现JAX-WS是可能的
- 可以混合使用端点技术,特别是在我的例子中,JAX-WS作为我们的端点,PHP SoapClient作为我们的电子商务端点
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提供的详细说明和参考资料链接。干杯。谢谢金姆确认我的理解。干杯