J2EE构造web service

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在这篇文章,我向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="http://oracle.j2ee.ws/ejb/Hello"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://oracle.j2ee.ws/ejb/Hello"

xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"

xmlns:ns1="http://oracle.j2ee.ws/ejb/Hello/types"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types>

<schema elementFormDefault="qualified"

targetNamespace="http://oracle.j2ee.ws/ejb/Hello/types"

xmlns="http://www.w3.org/2001/XMLSchema"

xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:tns="http://oracle.j2ee.ws/ejb/Hello/types"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<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="http://schemas.xmlsoap.org/soap/http"/>

<operation name="sayHello">

<soap:operation

soapAction="http://oracle.j2ee.ws/ejb/Hello:sayHello"/>

<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的本地注册。

未完待续

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航