分享
 
 
 

使用J2EE建立基于XML的网络服务(2)

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

1 客户层的连接

客户层的连接是指客户如何访问你的提供网络服务的系统。表1显示了连接到网络服务三种主要的客户类型。

表 1 客户的连接方式

客户类型

举例

这种客户的连接方式

商业伙伴(Business Partners)

赞助商(Distributors), 销售商(resellers), 大的、团体客户(large customers)

基于XML的网络服务技术 (SOAP, UDDI, WSDL, ebXML)

瘦客户(Thin Clients)

浏览器、PDA、无线设备

轻量、简单协议(Lightweight protocol )如HTTP

肥客户(Thick Clients)

小程序(Applets), 应用程序,现存系统

重量、复杂协议(Heavyweight protocol)如IIOP。

1.1 商业伙伴的连接

商业伙伴的可以获得特殊的网络服务。商业伙伴可以使用不同的编程语言、中间件以及硬件来连接。因此,当商业伙伴访问你的系统时,网络服务请求以XML的形式出现。XML是一个标准的元-标识语言(meta-markup language)可用于商业数据和允许异构系统交互。

1.1.1 Java Servlets

当商业伙伴发出一个网络服务请求,接收XML文档的是Java Servlets。一个Servlets是一个基于请求/应答的Java对象,它运行在可管理的容器环境下。它可以对使用任何协议(例如HTTP, FTP, or POP)的请求作出应答。在这种情况下,Servlets被用来对HTTP请求作应答,因为网络服务利用的是HTTP服务来使得跨越防火墙的通讯成为可能。

当一个请求进入一个J2EE网络服务系统,有如图2所示的下列有序操作发生。

Java servlet 获得XML 文档

servlet 处理获得的基于XML的请求

然后, servlet 调用一个或多个Enterprise JavaBeans (EJB) 组件完成商业数据处理

EJB组件进行处理时可能调用外部系统的功能

EJB组件返回数据给servlet

然后,servlet 转换返回值为XML 文档

servlet 返回XML 给客户作为应答

图 2 处理一个商业伙伴的请求

1.1.2 UDDI

在商业伙伴能够开始进行商业网络服务调用前,它必须先找到商业服务在哪里提供,发现了调用的接口和语义才能在他们这端开始配置软件和服务进行交互。因此,我们需要工具来发布我们的服务。

UDDI (Universal Description, Discovery, and Integration)是很重要的一个新的工程,它用于网络服务的提供和搜索。UDDI工程提供一种叫做UBR(UDDI Business Registry)的服务,它是全局的交易和服务的公共目录。网络服务提供者能够借助UBR注册和描述他们的服务。用户能够查询UBR来发现网络服务并获得与服务互操作的信息。

UDDI提供一个指引系统查找特定服务的描述文档的机制。UDDI包括标准“白页(white pages)”型的事物搜索和“黄页(yellow pages)”型的主题搜索,也有“绿页(green pages)”型的服务类型搜索。“绿页”型的搜索。使得开发者发现一个服务类型中的所有服务。

UDDI利用SOAP 消息 (典型的形式是XML/HTTP)来发布、编辑、浏览和查找注册表中信息。它也包括XML schema 来封装注册表服务(registry service)发送或者返回不同类型的数据。

1.1.3 JAXR

为了支持Java平台上的UDDI功能的实现,Java APIs for XML Registries (JAXR)是将要制订的一个开发者用来访问注册表的API规范。值得注意的是,JAXR不是现在建立网络服务必须的,你仍然可以使用更通用的XML API来直接和协议交互。JAXR是一套提供各种发布、查询和编辑注册表支持的Java API。它将主要焦点集中在B2B应用的网络服务上,并且提供复杂内容查询和发布/订阅XML消息的方法。它也能够用于访问其它类型的注册表,例如ebXML Registry (后面我们会讲到)。

1.1.4 WSDL

为了让商家发现它想用的服务,网络服务调用的语法和语义需要在调用前理解确定。WSDL (Web Services Description Language) 规范是一个描述网络服务接口、语义和每天处理的重复工作(interface, semantics, and administrivia)的XML文档。它让简单服务能够被快速和容易的描述和归档。

下面是个WSDL定义:

<?xml version="1.0"?>

<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl"

xmlns:tns="http://example.com/stockquote.wsdl"

xmlns:xsd1="http://example.com/stockquote.xsd"

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

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

<types>

<schema targetNamespace=http://example.com/stockquote.xsd

xmlns="http://www.w3.org/2000/10/XMLSchema">

<element name="TradePriceRequest">

<complexType>

<all>

<element name="tickerSymbol" type="string"/>

</all>

</complexType>

</element>

<element name="TradePrice">

<complexType>

<all>

<element name="price" type="float"/>

</all>

</complexType>

</element>

</schema>

</types>

<message name="GetLastTradePriceInput">

<part name="body" element="xsd1:TradePriceRequest"/>

</message>

<message name="GetLastTradePriceOutput">

<part name="body" element="xsd1:TradePrice"/>

</message>

<portType name="StockQuotePortType">

<operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/>

<output message="tns:GetLastTradePriceOutput"/>

</operation>

</portType>

<binding name="StockQuoteSoapBinding"

type="tns:StockQuotePortType">

<soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="GetLastTradePrice">

<soap:operation

soapAction="http://example.com/GetLastTradePrice"/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="StockQuoteService">

<documentation>My first service</documentation>

<port name="StockQuotePort" binding="tns:StockQuoteBinding">

<soap:address location="http://example.com/stockquote"/>

</port>

</service>

</definitions>

它包括下面的关键信息:

l 一个消息的描述/格式。它能被在<types>和 <message> 元素中传递(借助于嵌入的XML Schema 定义)。

l 在<portType>元素中消息传送的语义。(例如:只请求,请求-应答,只应答)

l 在<binding>元素中的特定编码(在各种诸如HTTP,HTTPS,或SMTP等特定传输协议上编码)。

l 在<service>元素中的服务端地址(一个URL)。

WSDL作为一种描述接口的技术接口通常和UDDI一起被提到。虽然UDDI是最常用而且是被推荐的注册WSDL规范的地方,UDDI规范并不局限于哪种格式会被链接到它的注册表。它可能是WSDL、常规的面向人可阅读的文档甚至仅仅是一个获得信息的email地址。

在Java Community Process (JCP)中,正在进行Java API for WSDL (JWSDL)规范的制订。当它发布时,将提供API来处理WSDL文档而不是直接处理XML文档。你能全部用到JAXP的功能时,使用JWSDL更容易和快速,它可以简化开发者的工作。

图3显示了WSDL和UDDI

图 3 使用JAXR,UDDI和WSDL

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有