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

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

1 Web服务的开发技术

1.1 Java平台上生成Web服务
利用XFire+Tomcat实现JAVA平台的POJO发布为Web Service,Tomcat是WEB容器,用于处理SOAP消息中的HTTP部分,XFire是SOAP引擎,用于在服务端处理SOAP消息。具体过程如下所示:
一、首先建立WEB.XML文件的配置映射,当访问services时,调用XFireConfigurableServlet来处理:
……    
<web-app>
  <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <display-name>XFire Servlet</display-name>
    <servlet-class>
        org.codehaus.xfire.transport.http.XFireConfigurableServlet
    </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/servlet/XFireServlet/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
</web-app>
二、XFireConfigurableServlet会自动查找classes下的META-INF/xfire/services.xml配置文件,在这个XML配置文件中,把要提供服务类或接口进行绑定,设置其名称、命名空间、需要绑定的类:
<beans xmlns=" http://xfire.codehaus.org/config/1.0">
  <service>
    <name>HelloWorldService</name>
    <namespace>http://202.118.22.171/ HelloWorldService </namespace>
    <serviceClass>cactus. HelloWorldService</serviceClass>
  </service>
</beans>
三、把需要服务的类或接口编写出来,我的示例是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服务
利用 IIS + C #+ .net 实现 .net 平台的 Web 服务发布, IIS 是 WEB 容器,用于处理 SOAP 消息中的 HTTP 部分, .net 自带的 API 用于处理 SOAP 消息。
例如发布一个 Hello World 的 Web 服务
在 .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服务
<?php
     //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 类表示 <definition> 元素,而由 Service 类表示 <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程序的开发。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值