Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1966712
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类: Java

2009-06-09 15:33:33

axis

axis

软件领域

  全称:Apache EXtensible Interaction System 阿帕奇可扩展交互系统
  Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还包括:
  是一个独立的SOAP服务器。
  是一个嵌入Servlet引擎(例如Tomcat)的服务器。
  支持WSDL。
  提供转化WSDL为Java类的工具。
  提供例子程序。
  提供TCP/IP数据包监视工具。
  

apache ws

Axis是第三代Apache SOAP,从2000年起,SOAP v2开发小组开始讨论如何让Axis更加灵活、可配置,以及能够处理SOAP和来自W3C的各种XML标准。通过不断地讨论和代码编写,Axis目前取得了如下成果:
  速度提高。 Axis通过基于事件的SAX对XML文档进行处理,从而在速度和效率上比Apache SOAP有所提高。
  灵活性提高。
  稳定性提高。
  提供面向组件的部署。
  提供一个简洁的传输抽象框架。其核心引擎完全于传输方式独立。从而使基于何种协议传输的选择更加灵活。
  支持WSDL。包括到处WSDL和客户代理生成等。
Axis支持的功能:
  SOAP1.1/1.2引擎。
  灵活的配置和部署系统。
  支持及时自动生成SOAP服务(JWS)。
  支持所有的基本数据类型,为自定义串行操作提供类型映射系统。
  JavaBean的自动串行操作,包括将自定义属性类型映射到XML的属性和元素。
  RPC和基于消息的SOAP服务提供者。
  从部署好的服务自动生成WSDL。
  WSDL2Java工具可以从WSDL描述文件中产生相应的客户和服务器端SOAP操作框架。
  初步提供安全扩展,能够与Servlet2.2安全集成。
  通过HTTP Cookie和与传输无关的SOAP头信息提供会话跟踪。
  初步支持带附件的SOAP消息。
  在EJB方面提供把EJB作为Web服务的访问途经。
  基于Servlet的HTTP传输。
  基于JMS的传输。
  独立的服务器(但需要HTTP 服务器和Servlet容器支持)。
  提供客户端、服务器端相关应用程序的样例。
  Axis的运行需要如下组件包
  axis.jar
  jaxrpc.jar
  saaj.jar
  commons-logging.jar
  commons-discovery.jar
  wsdl4j.jar
 
使用wsdl2Java工具(axis1.4 + j2sdk1.4.2_09):
1. 下载axis:

下载 ,解压,拷贝lib下的jar包

需下载activation.jar和mail.jar,否则在生成Java文件和调用的时候会出现异常:- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

下载javamail和jaf,解压出mail.jar和activation.jar

2. wsdl2Java ant脚本

WSDL文件的下载地址参见:

打开并保存为GoogleSearch.wsdl到工程axis-1_4工程目录下

--------------------------------------------------------------------

set JAVA_HOME = C:\j2sdk1.4.2_09
set PATH = %JAVA_HOME%\bin;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;
set CLASSPATH = %JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;

set Axis_Lib=E:\ming\workspace\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=E:\ming\workspace\axis-1_4\src
set Package=com.google.api
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% GoogleSearch.wsdl

--------------------------------------------------------------------

解析:

set Axis_Lib=E:\ming\workspace\axis-1_4\lib      //Axis jar包存放的文件夹
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=E:\ming\workspace\axis-1_4\src    //eclipse中axis-1.4工程路径
set Package=com.google.api                        //生成的java文件存放的包
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% GoogleSearch.wsdl                               //开始将GoogleSearch.wsdl生成为java文件

3. 编写客户端调试

package com.google.api;

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;

public class ClientGoogle {

public static void main(String[] args) throws ServiceException,
    RemoteException {
    String clientKey = "---------------key-----------------";
    GoogleSearchServiceLocator service = new GoogleSearchServiceLocator();
    GoogleSearchPort_PortType gsp = service.getGoogleSearchPort();

    //Google Search API
    GoogleSearchResult searchResult = gsp.doGoogleSearch(clientKey,
        "", 0, 10, false, "", false, "", "latin1",
        "latin1");
    System.out.println("Google Search Results:");
    System.out.println("======================");
    ResultElement results[] = searchResult.getResultElements();
    for (int counter = 0; counter < results.length; ++counter) {
      ResultElement result = results[counter];
      String returnResult = "('" + result.getTitle() + "','"
          + result.getURL() + "','" + result.getSnippet() + "')";
      System.out.println("Return Result");
      System.out.println(returnResult);
    }

    //Google CachedPage
    byte[] cachedBytes = gsp.doGetCachedPage(clientKey,
        "");
    System.out.println("Cached page:");
    System.out.println("============");
    String cachedString = new String(cachedBytes);
    System.out.println(cachedString);

    //Google SpellingSuggestion
    String suggestion = (String) gsp.doSpellingSuggestion(clientKey,
        "williamlong");
    System.out.println(suggestion);

}

}

相关资料:Google SOAP Search API
        
阅读(4470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~