`

基于WEBSERVICE的课件搜索系统(二)

阅读更多


 

4.3.2 WebService代理中心UDDI的实现<o:p></o:p>

当本地网站发出查询请求后,如上文提及的结构图所示,是先将请求发送到WebService的课件中心代理UDDI。其中,这个UDDI的作用是:存储各个网站的WebService信息地址,当有查询请求时,UDDI中心将会调用已经注册的WebService去搜索,当搜索完成时,会将搜索结果返回给用户。同时,用户可以通过uddi搜索有关的WebService。而在调用WebService的时候,有两种调用方式,一种是同步调用,另外一种是异步调用方式。
  在使用同步调用方式的时候,
调用WebService往往会经历较长的时延,或者是得不到响应(原因可能是Internet的连接问题,带宽问题,对方服务器过于繁忙等)。这样,有可能在客户端这边,就会处于不能响应的停顿状态,使得程序在等待返回结果时被挂起 处理请求的线程会一直被占用,直到方法调用结束。当前线程会一直等待调用完成。线程无事可做,只是等待,直至听到查询的返回。这种情况对于用户来说是不可以接收的。
  而异步调用方式则不同,它在当调用某个WebService而长期没有能得到回应时,会自动继续通过轮询查询机制,继续调用下一个WebService或者是其他资源。当某个WebService调用完成时,会发出一个回调信号,告诉调用者,调用已经完成。两种方式调用如图

<o:p></o:p>   
 
当我在设计好.NET端的WebService后,在设计JSP客户端调用WebService时,发现了一个问题,那就是,在很多非.NET语言中,并没有象.NET中的dataset的数据类型。但经过我的摸索,发现由于WebService中传递的都是XML,因此可以将.NET端搜索出来的结果以XML的形式表达出来,而不是单纯的DATASET。于是我就想到可以将.NET端WebService返回的结果以字符串的形式输出,就可以很好地解决这个问题。因此,我选择用字符串的方式,将调用返回的XML以字符串的方式返回给Java的客户端。

4.4  Jsp客户端的设计
     最后是Jsp客户端的设计。在这部分,我采用了前文提到的AXIS进行该部分的实现。 在实现前,必须要先产生客户端的STUB代理类,对XML进行反序列化,使得Java端能正    确识别解释XML。其中分为以下几个步骤:
1)
安装好有关的软件:
   除了要安装Axis外,为了对XML进行解释,同时要安装Xerces.Xerces也是Apache组织开发的免费开放代码的软件,目的是可以高效地进行对Java中涉及XML的部分进行解释(可在http://apache.org上下载)。
   <o:p></o:p>

2) 使用WSDL2JAVA工具产生有关的stub代理类。
    在AXIS中,有两套工具可以产生有关的代理类,分别为WSDL2Java和Java2WSDL。前者用于将已知的WSDL WEB描述文件中自动产生STUB代理类,后者是将已经存在的Java类自动产生相关的wsdl文件,用来将已有的程序转变为WebService。而在我的设计中,由于是由.net 端提供WebService,由JSP端作为客户端进行调用,因此它们的关系如下图所示:

<o:p></o:p>


    




    从上面的图可以看到,要使用Java提供的WSDL2Java工具,对由.net产生的wsdl文
件进行解释。采用的方法如下:
   先获得WEBSERVICE课件搜索代理UDDI(MSEARCH.ASM)的wsdl文件,输入:
    http://localhost/msearch/msearch.asmx?wsdl<o:p></o:p>

之后获得的wsdl文件。
接着,就可以运用WSDL2Java工具了。<o:p></o:p>

c:\java org.apache.axis.wsdl.WSDL2Java –package msearch http://localhost/msearch/msearch.asmx?WSDL
    运行完成后,会在msearch目录下自动产生stub的代理类。

4
实现JSP的客户端
   
 首先,要先导入已有的有关axis的类库及XML解释器
<%@ page language="java" import="msearch.*,javax.xml.parsers.*,org.w3c.dom.*,java.io.*,javax.xml.transform.*,org.xml.sax.*" %>

   接着,初始化STUB代理类的实例,调用WebService:
msearch.MsearchLocator binding=new MsearchLocator();<o:p></o:p>

   try {<o:p></o:p>

msearch.MsearchSoap port=binding.getmsearchSoap();<o:p></o:p>

String str=port.query(sql);//传入sql查询语句,返回的结果存放在字符串str当中,<o:p></o:p>

为了能在JSP客户端对调用返回的WebService中的XML解释,我使用了JAVA的DOM(XML文档对象模型)进行解释,因此,要初始化DOM对象。<o:p></o:p>

 <o:p></o:p>

//初始化DOM对象     <o:p></o:p>

StringReader stringReader = new StringReader(str);<o:p></o:p>

InputSource inputSource = new InputSource(stringReader);<o:p></o:p>

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<o:p></o:p>

    DocumentBuilder builder=factory.newDocumentBuilder();<o:p></o:p>

Document doc=builder.parse(inputSource);<o:p></o:p>

doc.normalize();<o:p></o:p>

    NodeList kejians =doc.getElementsByTagName("kejian");//提取每个kejian的结点集,<o:p></o:p>

    for (int i=0;i<kejians.getLength();i++)<o:p></o:p>

<o:p></o:p>

……<o:p></o:p>

提取每个结点的值,并予以显示<o:p></o:p>

 <o:p></o:p>

<o:p></o:p>

 <o:p></o:p>

这样,就完成了对.NET WebService端的调用,并且正确的在JSP端予以显示。下面是有关部分的截图:
 
在输入查询条件后,提交后,返回的结果为:

<v:shapetype id="_x0000_t75"><v:stroke></v:stroke><v:formulas><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f></v:formulas><v:path></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
   <o:p></o:p>

其中,由于我在设计的时候是在同一台机器上进行,所以在上面的结果中,localhost/kejiana表示的是该数据是来自kejiana的数据库的,而localhost/kejianb表示的是该数据是来自kejianb的数据库的。,(待续)

 

 


分享到:
评论

相关推荐

    webservice.概念架设webservice简单实例

    本教程将以一个简单的分布式课件搜索系统为例,使用Visual Studio 2003作为开发工具,C#作为编程语言,并利用SQL Server 2000作为数据库。系统包含一个ServiceGatherSite作为客户接口,它不直接与数据库交互,而是...

    WebService教程ppt.pptx

    #### 二、WebService 平台的核心元素 WebService 平台主要由以下三个核心组成部分构成: 1. **SOAP (Simple Object Access Protocol)**:简单对象访问协议,定义了一套基于 XML 的消息格式,用于在网络上进行结构...

    WebService实例解析.doc

    在IT领域,WebService是一种基于互联网的、平台无关的服务提供方式,它允许不同系统之间的交互和数据共享。本实例将深入解析WebService的工作原理和使用方法,特别是XML数据的传输。 首先,理解WebService的核心...

    webservice课件

    Web服务(Web Service)是一种基于开放标准的互联网技术,它允许不同系统间的应用程序相互交互,打破平台和语言的限制。这种交互是通过一系列基于XML(eXtensible Markup Language)的标准来实现的,主要包括WSDL...

    XML WebService完全实例详细解析

    为了更深入地理解Webservice的使用,我们将通过构建一个简单的分布式课件搜索系统来进行实操解析。该系统包含以下几个关键组件: 1. **ServiceGatherSite**:作为服务消费者的网站,负责向用户提供统一的查询界面。...

    WebService完全实例详细解析

    - **分布式课件搜索系统**:以一个简单的分布式课件搜索系统为例,系统包括一个提供查询接口的`ServiceGatherSite`,以及两个提供实际服务的资源站`WebSiteA`和`WebSiteB`。`ServiceGatherSite`不直接与数据库交互...

    Xml WebService完全实例解析

    为了更深入地理解 WebService 的应用,我们通过一个简单的分布式课件搜索系统的示例来阐述。这个系统包括一个 ServiceGatherSite,作为对外的查询接口,以及多个资源站(WebSiteA 和 WebSiteB),它们分别提供数据。...

    WebService实例解析.pdf

    在本实例中,我们将探讨如何创建和使用WebService,以一个分布式课件搜索系统的例子进行详解。 首先,WebService作为对外的接口,它提供了可供外部调用的函数,但同时也会有内部私有的函数。在这个例子中,我们有一...

    Xml WebService完全实例解析.docx

    2. **XML Web Service的实例——分布式课件搜索系统** - 在这个实例中,我们有一个名为`ServiceGatherSite`的服务接口,它不涉及任何数据库操作,仅提供给用户一个查询入口。真正的服务处理由两个资源站(`WebSiteA...

    软件专业毕业设计选题大全 (2).docx

    32. **基于 WebService 的实训基地管理系统、"经由打印机网络收到的 JPEG 图像数据的合成、印刷处理"、GUI 变换**:利用 Web 服务、图像处理和用户界面设计。 33. **基于 J2ME 的 3G 系统的存储实现、会议管理、...

    北大青鸟 4.0 ASP.NET 课件 13

    总结来说,北大青鸟4.0 ASP.NET课件13深入讲解了Web服务的概念、结构、开发流程、文件结构、UDDI以及服务发现机制,这些都是构建分布式系统和实现企业间交互的关键技术。通过学习这些内容,开发者能够熟练地创建、...

    XMLWebService完全实例详细解析 .docx

    在本实例中,我们将深入探讨如何构建和使用XML Web Service,以一个分布式课件搜索系统的例子来阐述。 首先,理解WebService的基本概念:它是一个公开的接口,提供一系列可调用的函数供外部客户端使用。客户端并不...

    JSP动态网页设计 PPT课件

    动态网页技术,如JSP,主要用于实现交互性和自动更新功能,例如站点搜索、用户注册、登录、新闻系统、论坛等。动态网页与静态网页的主要区别在于扩展名(如.jsp、.asp、.php等)和是否具备交互性。相比之下,静态...

Global site tag (gtag.js) - Google Analytics