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

原创 2001年09月06日 15:50:00

3.1.1               SOAP

当商业伙伴用UDDI寻找你的WSDL描述时,他们可以使用SOAP (Simple Object Access Protocol)调用你的网络服务一个或多个操作。

SOAP支持一系列诸如HTTP(S)SMTP的底层协议,可用XML文档进行商业方法请求。使用XML是因为它是语言无关的、可扩展的和坚实的工业标准支持。使用HTTP是因为任何可以连通Internet的系统能够在端口上进行通讯,它是一个能够和任何系统交互的协议,而且它能利用80号端口通过防火墙设置。

SOAP的威力来自于它的简单。SOAP是轻量(lightweight)的且十分容易理解也容易实现的技术。它基于工业动力且被所有大的电子商务平台支持。

从技术的角度来说,SOAP规范了如何各种调用事务片(“call administrivia”)也规定了如何编码参数。一个SOAP envelope封装了可选的头部和主体信息。它通常通过HTTPPOST动作与HTTP服务器交互,也可以用其它形式来传输(如SMTP也是可以的)。SOAP同时支持消息发送和RPC调用的语义。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

下面是一个被传送的SOAP调用:

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    <SOAP-ENV:Header>
        <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
           5
        </t:Transaction>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <m:GetLastTradePrice xmlns:m="Some-URI">
            <symbol>SUNW</symbol>
        </m:GetLastTradePrice>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

3.1.2               JAX/RPC

为了帮助开发者建立基于XML的请求,JCP正在开发Java APIs for XML based RPC (JAX/RPC)JAX/RPC用于发送和接收诸如SOAP或者XMLP((XML Protocol,在http://www.w3.org/2000/xp/有详细信息)过程调用。JAX/RPC让你从各种协议的繁文缛节中摆脱出来,提供快速开发的方法。这样就可以不在需要直接处理XML文档了。

现在有很多第三方的SOAP实现方案。开发者可以不同层次的自动化手段来进行开发,繁多的API把程序员缠住了。将来JAX/RPC会代替这些API,提供一个基于现在各种实现的统一的接口。JAX/RPC提供一个统一的接口来建立和处理RPC调用并且自动转换输入输出参数。

当从商业伙伴收到一个SOAP请求时,一个Java servlet使用JAX/RPC接收基于XML的请求。一旦请求被接收,servlet进行事物处理并返回结果给商业伙伴。

3.1.3               ebXML

为了更多的商业交互,需要在商业交互、多请求传输、纲要(schemas)和文档流的结构上达成协议。虽然SOAP提供你能建立扩展商业交互的一个底层的基础,但是你可能需要一个高级的框架来解决这些上述的问题。

这些是ebXML的目的,ebXML是一套XML规范和相关的处理和行为,它们被设计用来提供B2B的协作和集成的基本架构。它是一个全面的规范,能够为商家接受合作伙伴以及引导商业运作带来革新。下面是ebXML标准中关键的几个组成部分。

Collaboration Protocol Profile (CPP)

CPP描述一个公司提供一个标准的、可移植的方案。特别的,它描述一个公司支持的消息交互的能力和商业协作。它也描述公司的商业进度,包括合作伙伴如何与公司交互。CPP上一个有趣的面是商业合作包括B2B传输双方的两面。例如,在销售状态,CPP能够描述不止是销售进度和销售商的语义,而且还描述购买的进度和购买者的语义。

Collaboration Protocol Agreement (CPA)

CPA描述两个公司交互的精确机制和需求。它被手工或者自动由CPP的相关部分建立,它被双方检阅和达成协议。CPA成为双方的合同,它规定特定合作中接轨的方案(“rules of engagement”)。

CPPCPA的例子和详细规范可以在下面地址找到:

http://ebxml.org/project_teams/trade_partner/cpp-example.xml

http://ebxml.org/project_teams/trade_partner/cpa-example.xml

http://www.ebxml.org/specs/ebCCP.pdf

商业进度和信息模型(Business Process and Information Modeling)

ebXML也包括用XML描述商业进度的规范。它包括传输、文档流、二进制合作数据封装格式以及更多。这些规范在建立CPP时被作者使用也被用于描述和共享商业进度和信息格式。

核心组件(Core Components

ebXML标准的另一个至关重要的部分是一系列XML schema,也被叫做核心组件。这些schema包括商业数据的格式,例如日期、税收总量、帐目拥有者、交换合同等。它们是特定商业架构和实体,但是不和任何垂直工业(vertical industry)靠齐。

消息传送(Messaging

ebXML消息传送是用所有相关的面向消息的中间件语义(如:同步/异步,可靠选项)封装消息的格式。特别的,一个ebXML消息传送代表一个可见的CPA的执行体,也拥有指定用来加强接轨的方案(“rules of engagement”)的特征。

ebXML消息传送建立在SOAP封装的消息传送调用(相对于RPC风格的调用)的基础之上。它加入分层的框架来支持附件、安全、和可靠发送从而扩展了SOAP协议。

注册表/知识库(Registry/Repository

ebXML的注册表/知识库是存储CPPCPAebXML核心组件以及其它ebXML文档和块的服务,它包括强大的查询能力帮助用户搜索相关组件和实质的商业伙伴。JAXR API也能够用于访问ebXML注册表。存储在ebXML注册表中CPP定义的商业服务能被发布到UDDI中。一个关键的概念是UDDI提供一个全局的单一的参照源,而ebXML知识库则提供一个局部的内部数据存储容器。因此,在广域网服务语义中,一个实际的商业伙伴会首先查找UDDI服务,它包括实际存储在ebXML知识库中的CPP或其它文档的引用信息。

3.1.4               JAXM

当收到一个商业伙伴的网络服务请求时,在我们的servlet中,如同我们用JAX/RPC处理SOAP请求一样我们需要一个Java API处理ebXML信息。

The Java API for XML Messaging (JAXM)是一个将要制订的规范,它用于与诸如ebXML消息和SOAP消息的XML消息标准。这个API被设计用于辅助XML消息协议的处理,特别是对于哪里原有定义的“合同”(ebXML是一个特例)来决定消息格式和消息约束。这个API会处理所有“封装(envelope)”信息。例如消息中的过程信息。这让开发者集中注意力于有效载荷的交互而忽略其它细枝末节。

虽然现在开发者可以使用JAXP来实现JAXM将提供的功能,JAXM能够提供一个专门用于基于XML的消息发送的API集。它会大量简化任务且为这类代码生成一个统一和标准的界面。

JAXMJAX/RPC的差别就如同面向消息的中间件(MOM)和远程过程调用(RPC)的区别。JAXM被调整用于面向消息的中间件型应用程序,而JAX/RPC被专门设计用于RPC行为。图4显示了JAX/RPCJAXM

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

4  在一个servlet.m中使用JAXMJAX/RPC

注意到在JAXMJAX/RPC能够使用之前,开发者将依赖于第三方的SOAP API,诸如Apache SOAPIdooXOAPGLUE。当JAXMJAX/RPC发布后,他们应该提供一个统一的接口来实现现在各种SOAPebXML消息传送。这类似于JDBC如何提供一个统一的接口来访问传统数据库引擎。

到此,我们完成了对商业伙伴连接到你的服务的讨论,下面,我们将讨论瘦客户和肥客户的连接。

 

j2ee项目开发web.xml文件加载及配置详解

最近又有点闹不明白web.xml文件配置加载顺序了,今天没事又对web.xml文件知识整理了下。就web.xml文件配置及加载顺序讲解:Repeatable="true" 表示可以有多个这样的元素,O...
  • xzy0725
  • xzy0725
  • 2014年02月04日 16:57
  • 1636

J2EE进阶(五)Spring在web.xml中的配置

J2EE进阶(五)Spring在web.xml中的配置前言          在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016年07月16日 12:10
  • 45020

python简单网络服务器

对于服务器来说建立TCP连接的过程分为4步: 1.建立socket对象 2.设置socket对象(可选) 3.绑定到一个端口(网卡) 4.侦听连接 import socket host = '' p...
  • rebelqsp
  • rebelqsp
  • 2014年03月26日 14:38
  • 1884

J2EE学习总结之——会话数据管理cookie和Session

会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。 有状态会话:用户甲访问网站A,下次再访问A网站,A网站知道这甲这个用户曾经访问过...
  • u011500356
  • u011500356
  • 2016年08月07日 16:38
  • 702

J2EE中web.xml配置文件详解

一、web.xml是什么 web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是Web应用的配置文件,是Web应用的基础。 二、web.xml加载流程 总的来说:ServletC...
  • zhangliangzi
  • zhangliangzi
  • 2016年02月11日 15:37
  • 6987

J2EE三大框架各自的作用是什么?

JAVA三大框架Struts、hibernate和spring的各自作用是什么?struts 主要负责表示层的显示,spring 利用它的IOC和AOP来处理控制业务(负责对数据库的操作),hiber...
  • yangkeshihaer
  • yangkeshihaer
  • 2014年10月16日 16:48
  • 970

解决Ubuntu 12.04更新后 ”系统的网络服务与此版本的网络管理器不兼容“问题

还是手贱,在修改了网络配置和更新后,开机,机子木有无线网卡了,有线网卡也非常诡异,必须要restart network才能连出去。 在打开系统的网络连接面板时,出现系统的网络服务与此版本的网络管理器...
  • pugu12
  • pugu12
  • 2015年01月29日 21:50
  • 342

j2ee,使用maven创建web项目

目前做的项目使用的是MAVEN来管理jar包,这也是我第一次接触maven,感觉非常好,再也不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载。...
  • qq372577751
  • qq372577751
  • 2015年12月03日 16:31
  • 1235

解析J2EE与XML组合技术(3)

MediaParser类的构造函数初始化了一个Xerces DOM解析器。parse()方法告诉解析器到哪个URL去找XML源,然后得到结果文档并返回。loadAssets()方法调用parse()方...
  • zheng850
  • zheng850
  • 2013年01月20日 09:39
  • 192

J2EE架构的优点和缺点有哪些

首先是UI层很难由美工和系统设计师来总体设计,由于即使是Delphi之类的可视化开发工具,界面问题还是要程序员自己调整。解决这个问题可以走两条路:用自己的皮肤系统和美工本来就会IDE。      其次...
  • cenguocheng
  • cenguocheng
  • 2013年06月17日 23:47
  • 3320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用J2EE建立基于XML的网络服务(3)
举报原因:
原因补充:

(最多只允许输入30个字)