现在的位置: 首页 > 综合 > 正文

Web服务搜索与执行引擎(二)——相关技术的介绍

2013年02月26日 ⁄ 综合 ⁄ 共 1462字 ⁄ 字号 评论关闭

      在开发本项目时,我们使用的相关技术主要有以下几个方面。

1 Web服务的开发技术

1.1 Java平台上生成Web服务
利用XFire+Tomcat实现JAVA平台的POJO发布为Web Service,Tomcat是WEB容器,用于处理SOAP消息中的HTTP部分,XFire是SOAP引擎,用于在服务端处理SOAP消息。具体过程如下所示:
一、首先建立WEB.XML文件的配置映射,当访问services时,调用XFireConfigurableServlet来处理:
……    
  
    XFireServlet
    XFire Servlet
    
        org.codehaus.xfire.transport.http.XFireConfigurableServlet
    

  
  
    XFireServlet
    /servlet/XFireServlet/*
  
  
    XFireServlet
    /services/*
  
二、XFireConfigurableServlet会自动查找classes下的META-INF/xfire/services.xml配置文件,在这个XML配置文件中,把要提供服务类或接口进行绑定,设置其名称、命名空间、需要绑定的类:
http://xfire.codehaus.org/config/1.0">
  
    HelloWorldService
    http://202.118.22.171/ HelloWorldService
    cactus. HelloWorldService
  

三、把需要服务的类或接口编写出来,我的示例是cactus. HelloWorldService类:
package cactus;
public class HelloWorldService {
public void sayHelloWorld(){
 System.out.println(“Hello World!”);
 }
 }
四、把XFire及其需要的包都拷过来。下载XFire后,解压后有个lib目录,把里面全部的包都拷过来下载的XFire包也拷过来
五、启动TOMCAT进行服务器端的测试:
Available Services:
HelloWorldService [wsdl]     

    Generated by XFire ( http://xfire.codehaus.org ) 

1.2 .Net平台上生成Web服务
利用IISC#+.net实现.net平台的Web服务发布,IISWEB容器,用于处理SOAP消息中的HTTP部分,.net自带的API用于处理SOAP消息。
例如发布一个Hello WorldWeb服务
.net平台下建立一个Web服务
写下面代码:
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
1.3 P平台上生成Web服务HP
利用Apache+nusoap实现PHP平台的Web服务发布,Apache是WEB容器,用于处理SOAP消息中的HTTP部分,nusoap负责生成WSDL处理SOAP消息。
下面用php+nusoap发布一个两个数相加的Web服务

     //server.php
//导入nusoap.php
require("nusoap/lib/nusoap.php");
//声明一个soap_server对象
$server=new soap_server();
//配置WSDL
$server->configureWSDL('HelloWorld','urn:HelloWorld');
//定义目标命名空间
$server->wsdl->schemaTargetNamespace='urn:HelloWorld';
//注册Adder
$server->register
(
            //操作名
"Adder",
//参数类型
array('format'=>'xsd:int','fuck'=>'xsd:int'),
//返回值类型
array('return'=>'xsd:int'),
'urn:HelloWorld',
'urn:HelloWorld#Adder'
);
function Adder($a,$b)
{
return ($a+$b);
} $HTTP_RAW_POST_DATA=isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:'';
$server->service($HTTP_RAW_POST_DATA);
?>
 
访问http://localhost/server.php即为该服务
而相应WSDL位置为http://localhost/server.php?wsdl
2 Web服务的调用技术     
2.1 Web服务的解析技术
WSDL4J 提供可以用于解析现有 WSDL 文档或通过编程创建新 WSDL 文档的标准 Java 接口。WSDL4J 是定位在 IBM developerWorks 网站上的一个开放源码项目。大多数 WSDL4J 类表示能够在 WSDL 文档中出现的元素。例如,由 Definition 类表示 元素,而由 Service 类表示 元素。也有使 WSDL 文档变得易于读取和解析以及将 WSDL4J 对象的内容作为 XML 文档写出的实用类。
2.2消息的生成技术 SOAP
SAAJ(SOAP with Attachments API for Java)是在松散耦合软件系统中利用SOAP协议实现的基于XML消息传递的API规范。顾名思义,SAAJ支持带附件的SOAP消息。SAAJ提供了一个能方便地构建和读取SOAP信息的库,这个库还允许你通过网络接收和发送SOAP信息。SAAJ API为我们提供了一个高层次的SOAP消息封装接口,如:信封接口:javax.xml.soap.SOAPEnvelope,并提供了操作getHeader(),该方法返回一个消息头:javax.xml.soap.SOAPHeader。所以,通过调用SAAJ的接口函数,我们就可以对SOAP消息进行操作。
利用JDOM技术,根据从WSDL中解析出的返回信息来提取SOAP中的返回值,最终呈现给用户
2.3基于LuceneWeb服务搜索 
基于搜索效率考虑,我们使用了开源索引数据库引擎Lucene
通过对Lucene源码包的分析,我们可以初步认识到Lucene的核心类包主要有3个:
 
l         org.apache.lucene.analysis
l         org.apache.lucene.index
l            org.apache.lucene.search
 
其中org.apache.lucene.analysis 主要用于切分词,切分词的工作由Analyzer的扩展类来
实现,Lucene自带了StandardAnalyzer类,我们可以参照该写出自己的切词分析器类,如中文分析器等。 
org.apache.lucene.index主要提供库的读写接口,通过该包可以创建库、添加删除记录及读取记录等。
org.apache.lucene.search主要提供了检索接口,通过该包,我们可以输入条件,得到查询结果集,与org.apache.lucene.queryParser包配合还可以自定义的查询规则,像google一样支持查询条件间的与、或、非、属于等复合查询。
3 J2EE Web应用构建技术
本项目是基于J2EE WEB技术来开发服务器端程序,以及基于浏览器访问的客户端页面。主要用到了J2EE的Servlet API来处理从浏览器或移动设备中的HTTP请求,用到的Servlet容器为Apache的TOMCAT5.5。使用JSP来构建基于浏览器访问的客户端页面.使用JDBC来处理与MySql的数据库连接。
4 J2ME手机客户端开发技术
利用SUN公司的J2ME技术来开发基于手机的客户端应用,开发这种程序可以简化的分解成三个层面:
1 J2ME的客户端(MIDlet程序)
2 服务器端的servlet(servlet程序)
3 数据库(MySql等)
在本项目里,服务器的servlet有两种,一种是对应来自浏览器访问的HTTP请求,一种是对应来自手机的HTTP请求,这种Servlet是我们在开发手机客户端时在服务器端需要另外加的代码,其它代码可以直接调用服务器端的原来代码,如数据库连接验证用户的登录信息是否正确等等。所以本项目的手机客户端开发主要是集中在MIDlet程序的开发。


 

【上篇】
【下篇】

抱歉!评论已关闭.