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

news/2025/2/26 19:41:03

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

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进行服务器端的测试:
输入网址: http://localhost:8080/ HelloWorldService /services/浏览器会显示你所绑定的类或接口名称,如:
Available Services:
HelloWorldService [wsdl]      

    Generated by XFire ( http://xfire.codehaus.org ) 
点击服务名后面的 [wsdl],会显示该服务类的详细wsdl描述.
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程序的开发。

 
 

http://www.niftyadmin.cn/n/1998719.html

相关文章

linux实时监控目录文件修改,Shell脚本监控目录内文件改动

废话不多说了&#xff0c;直接给大家贴代码&#xff0c;具体代码如下所示&#xff1a;#! /bin/bashwebroot"/home/www/"cp /dev/null rsync_fileif [ ! -f file.md5 ];thenfind $webroot -type f -exec md5sum {} \; >>file.md5elsefor file in $(md5sum -c fi…

Web服务搜索与执行引擎(三)——系统设计方案

系统总体结构如图3.1所示&#xff0c;主要分为用户接口层、核心业务层以及基础服务层。 图3.1 系统总体架构图3.1 用户接口层用户接口层是用户进入Cactus Web服务搜索与执行引擎的入口。本层采用了两种用户接入方式&#xff1a;第一种是基于Internet网络的Http访问&#xff0c…

Web服务搜索与执行引擎(四)——基于(三)的系统架构设计

上一总结文档 Web服务搜索与执行引擎(三)——系统设计方案 可以说是系统的一种物理结构&#xff0c;基于这样的结构&#xff0c;我们是这样设计接下来的系统架构。 1 系统功能图 系统功能结构图如图1所示。使用者管理功能&#xff1a;服务使用者需要注册到本系统才能真正使用…

linux配置端口的命令是什么,linux查看端口命令是什么

linux查看端口命令是什么&#xff1f;Linux查看端口命令第一种&#xff1a;lsof -i:端口号第二种&#xff1a;netstat -nltp | grep 端口号-a&#xff1a;显示本机所有连接和监听地端口-n&#xff1a;网络IP地址的形式&#xff0c;显示当前建立的有效连接和端口-r&#xff1a;显…

网站漏洞——文件判断函数的安全风险(实战篇)

PHP是以C语言为底层语言的通用开源脚本语言&#xff0c;支持几乎所有流行的数据库以及操作系统&#xff0c;执行效率比完全生成HTML标记的CGI要高许多&#xff0c;主要适用于Web开发领域。最重要的是PHP可以用C、C进行程序的扩展&#xff01; 所有文件操作函数都属于敏感函数&a…

Web服务搜索与执行引擎(五)——系统运行有关界面展示

为了更好地展开接下来的总结文档&#xff0c; 我先把系统的运行示例——一些界面截图&#xff0c;先贴出来&#xff0c;在以下的界面里&#xff0c;都是以Web服务消费者的身份参与系统的活动&#xff0c;而以Web服务提供者使用系统的界面没有贴出来&#xff0c;下面分为两部分来…

linux文件权限未知,未知文件的权限 - Linux的

什么是他们未知的&#xff1f;从ls手册页&#xff1a;The next three fields are three characters each: owner permissions, grouppermissions, and other permissions. Each field has three character positions:1. If r, the file is readable; if -, it is not readable.…

Web服务搜索与执行引擎(六)--基于Lucene的Web服务检索

从这篇总结文档开始将着眼于我们使用的技术的详细分析。 本篇总结的目的不在于对Lucene的概念和设计进行详细介绍&#xff0c;重点是介绍怎么样去使用Lucene来达到针对自己业务需求的全文检索&#xff0c;如果想要深入了解 Lucene的话本文可能不太适合。但是对于那些以前从来没…