J2EE构造web service

发表于:2007-07-01来源:作者:点击数: 标签:
在这篇文章,我向 java 程序 开发 者介绍service-oriented architecture ( SOA ),我将解释怎么使用J2EE 1.4去建立一个web 服务使其能操作和方便的通过J2EE1.4来适应应用服务(例如: Oracle Application Server)。 Web Services Architecture 让我们在学习w
在这篇文章,我向java程序开发者介绍service-oriented architecture (SOA),我将解释怎么使用J2EE 1.4去建立一个web 服务使其能操作和方便的通过J2EE1.4来适应应用服务(例如: Oracle Application Server)。

 Web Services Architecture
         让我们在学习web services部署J2EE platform之前,我们先了解web service 的主要结构。
         通过网络我们可以找到一些关于 web services的定义、发布、和调用。一个web service,如图一

                                                                 图一

        现在有两种web services:“RPC style and document style”,RPC-style web services是在最初受欢迎的。但在近几年是document-style是首选的web services。
    
       RPC-style web services是远程程序调用,代表相互交互。RPC-style web services在交互信息中调用和返回必须先符合明确的签名,在应用中非常不方便。相反,document-style web services 通过用xml,来改变发送和接收应用。
    
        许多的开发者觉得web services是一个有活力的技术,他继承SOA。因为它提供一个相互作用在不同的平台和轻便的技术。例如xml,soap,and http。
   What Are Web Services Made of?      

        在web service首先要先定义A Web Services Definition Language (WSDL; pronounced "wizdle") 文档。

这个WSDL提供一个完全的描述web service,包括端口、操作、信息类型等。

Here is a simple example of a WSDL document that describes a HelloWorld web service:


<definitions
 name="HelloService"
 targetNamespace=""
 xmlns=""
 xmlns:tns=""
 xmlns:mime=""
 xmlns:soap12=""
 xmlns:ns1=""
 xmlns:xsd=""
 xmlns:soap="">
 <types>
  <schema elementFormDefault="qualified"
  targetNamespace=""
   xmlns=""
   xmlns:soap11-enc=""
   xmlns:tns=""
   xmlns:wsdl=""
   xmlns:xsi="">
  <complexType name="sayHello">
    <message name="HelloServiceInf_sayHello">
      <part name="parameters"
        element="ns1:sayHelloElement"/>
    </message>
    <message name="HelloServiceInf_sayHelloResponse">
      <part name="parameters"
        element="ns1:sayHelloResponseElement"/>
    </message>
    <portType name="HelloServiceInf">
      <operation name="sayHello">
        <input message="tns:HelloServiceInf_sayHello"/>
        <output message="tns:HelloServiceInf_sayHelloResponse"/>
      </operation>
    </portType>
    <sequence>
      <element name="String_1" nillable="true" type="string"/>
    </sequence>
  </complexType>
  <complexType name="sayHelloResponse">
    <sequence>
    <element name="result" nillable="true" type="string"/>
    </sequence>
  </complexType>
  <element name="sayHelloElement" type="tns:sayHello"/>
  <element name="sayHelloResponseElement"
    type="tns:sayHelloResponse"/>
  </schema>
 </types>
 <binding name="HttpSoap11Binding" type="tns:HelloServiceInf">
 <soap:binding style="document"
      transport=">
 <operation name="sayHello">
   <soap:operation
      soapAction=">
   <input>
     <soap:body use="literal" parts="parameters"/>
   </input>
   <output>
     <soap:body use="literal" parts="parameters"/>
   </output>
 </operation>
 </binding>
 <service name="HelloService">
   <port name="HttpSoap11" binding="tns:HttpSoap11Binding">
     <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
   </port>
</service>
</definitions>

           在这个WSDL,你需要注意HelloService ,包括他的包括端口、操作、信息类型等。这个WSDL 使web service 和客户端,能够自动的产生客户端代理。

在这个web services有两个主要的技术,一个是SOAP,它是调用web service,一个是UDDI它提供web service的本地注册。

未完待续

原文转自:http://www.ltesting.net