`

Web Service学习,用于web service实现的两个主要的框架axis和xfire.

阅读更多

   今天继续学习web service,王老师讲了web service中使用的wsdl(网络服务描述语言)和用于web service实现的两个主要的框架,axis,xfire.王老师提到。axis技术要早,比较成熟和稳定。xfire在新的软件系统中比较常用。
   Web Services 技术
SOAP    它把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一起。HTTP用于实现SOAP的RPC风格的
传输,而XML是它的编码模式。一个SOAP请求的HTTP体是一个XML文档,它包含方法中[in]和[in,out]参数的值。这些 值被编码成为一个显著的调用元素的子元素,这个调用元素具有SOAPMethodNameHTTP头的方法名和名域URI。调用 元素必须出现在标准的SOAP<Envelope> 和<Body>元素内,SOAP的XML特性是为把数据类型的实例序列化成XML的编 码模式。
    WSDL是 “网络服务描述语言 (Web Services Description Language)”的缩写。它是为自如地表述多种类型的网络服务
而设定,可以用于描述 SOAP 网络服务。 一个 WSDL 文件不过就是一个文件。更具体地讲,是一个 XML 文件。通常存储于你所访问的 SOAP 网络服务这个被描 述对象所在的服务器上。
在 WSDL 文件中描述了调用相应的 SOAP 网络服务的一切:

  服务 URL 和命名空间
  网络服务的类型 (可能是 SOAP 的函数调用,但我说过,WSDL 足够自如地去  描述网络服务的广泛内容)
  有效函数列表
  每个函数的参数
  每个参数的类型
  每个函数的返回值及其数据类型
换言之,一个 WSDL 文件告诉你调用 SOAP 所需要知道的一切。

 

axis 安装配置
安装JDK
安装并配置Tomcat
从官方网站
http://ws.apache.org/axis 下载最新的Axis项目打包文件,并将webapps下axis目录拷贝到Tomcat的webapps

目录下
验证Axis的安装,发布一个服务,浏览所发布的服务。
   即时发布
使用即时发布首先需要一个实现服务功能的Java源文件,将其扩展名改为.jws (Java Web Service的缩写),然后将该
文件放到Tomcat下面的webapps\axis目录下即可。但是JWS的web服务发布是一个很简单的Web服务发布方式,在页面 中你不能使用包,而且由于代码是在运行期被编译的,所以在部署之后,你也很难找到错误所在。
   定制发布
编写要发布为服务的java类
编译生成的class文件应该放在Tomcat下的webapps\axis\WEB-INF\classes\下面编写deploy.wsdd 文件描述服务的名称,入口等信息切换到命令航下,执行
  java org.apache.axis.client.AdminClient deploy.wsdd
  服务器端发布以后,客户端就可以调用其服务了,客户端的调用有三种方式
  1.DLL动态接口调用方式(Dynamic Invocation Interface)
  2.动态代理方式(Dynamic Proxy)
  3.静态方式 (Stubs)
当前主流的两种web service技术是axis和xfire,先看一下axis的这三种方式的服务调用,ddl方式
  public static void main(String [] args) {
       try {
           String endpoint =
                    "
http://localhost:8080/axis/services/test1 ";
           //实例化一个服务对象service
           Service  service = new Service();
          
          //创建一个空的调用对象Call,设置Call的操作名称,目标地址,传入参数等等
           //执行调用后即可得到返回的结果
           Call     call    = (Call) service.createCall();
           call.setTargetEndpointAddress( new java.net.URL(endpoint) );
           //QName读取节点   "
http://soapinterop.org/ "是namespace
           call.setOperationName(new QName("
http://soapinterop.org/ ", "add3") );

           Integer ret = (Integer) call.invoke( new Object[] { 1,3 } );

           System.out.println( ret);
       } catch (Exception e) {
           System.err.println(e.toString());
       }
   }

动态代理方式
动态代理需要一个本地的接口作为代理
public interface ITestDynameicProxy extends Remote {
     public String getMessage() throws RemoteException;
}

public static void main(String[] args) throws Exception {
     String wsdlUrl = "
http://localhost:8080/axis/test/Test.jws?wsdl ";
     String nameSpaceUri = "
http://soapinterop.org/ ";
     String serviceName = "Test1Service";
     String portName = "Test1";
     ServiceFactory serviceFactory = ServiceFactory.newInstance();
     Service service = serviceFactory.createService(
      new URL(wsdlUrl), new QName(nameSpaceUri,serviceName));
     //创建代理
     ITestDynameicProxy proxy = (ITestDynameicProxy)service.getPort(
       new QName(nameSpaceUri,portName),ITestDynameicProxy.class);
     System.out.println(proxy.getMessage());
}
    通过输入wsdl地址,命名空间地址和服务名,用服务工厂创建出一个服务实例,再通过设置端口名得到一个服务类

型的服务代理对象,通过该代理,就可以直接访问web服务了。
    静态方式:
按常规方式发布一个web service
得到wsdl文件
通过web页面直接另存为
通过Java2WSDL工具类生成
(java org.apache.axis.wsdl.Java2WSDL -o demo1.wsdl -l
http://localhost:8080/axis/services/demo -n

http://www.itcast.cn/    test.Demo)
利用WSDL2Java工具类生成客户端调用代码
(java org.apache.axis.wsdl.WSDL2Java demo.wsdl -p client)
在生成的代码基础上,进行客户端的调用 
     public static void main(String[] args) throws ServiceException, RemoteException {
 DemoServiceLocator demoService = new DemoServiceLocator();
 Demo demo = demoService.getdemo();
 System.out.println(demo.getMessage());
 }
xfire类似Axis,也有三种客户端调用的方式
     dll方式
 public static void main(String[] args) throws MalformedURLException,
  Exception {
   Client client = new Client(
      new URL("
http://localhost:8080/xfire/services/HelloWorld?wsdl "));
   Object[] results = client.invoke("example", new Object[] { "name" });
   System.out.println((String) results[0]);
}
动态代理方式,这也是要学习的银联项目中要用到的

public static void main(String[] args) {
//1-制造一个service对象,来利用web service所提供的服务
Service service = new ObjectServiceFactory().create(firstPortType.class);
//2-制作一个XFire的代理工厂,有了代理之后,调用web service的方法就好像是在本地进行调用了
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//3-获取web service提供服务的网址
String sayHelloURL = "
http://localhost:8080/axis/services/Version ";
//4-开始使用web service
try {
firstPortType test = (firstPortType)factory.create(service, sayHelloURL);
String str = test.getVersion();
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}

分享到:
评论
1 楼 king_jw 2012-08-29  
不错,学习了

相关推荐

    web_ service_基于axis和xfire.rar

    在本压缩包"web_service_基于axis和xfire.rar"中,重点是介绍了如何使用Axis和XFire这两个Java框架来开发和实现Web服务。 Axis是Apache软件基金会开发的一款开源工具,主要用于简化SOAP(简单对象访问协议)和WSDL...

    使用XFire+Spring构建Web Service

    在工程中,你需要为Web Service相关的类和测试代码分别创建两个源目录,比如`webservice`和`test`。接着,在`web.xml`配置文件中设置XFireSpringServlet,以便对外提供Web Service服务。这一步骤确保了Spring与XFire...

    axis和xfire配置webService的源代码

    本文将深入探讨这两个框架以及如何配置它们来实现Web服务。 **Axis** Axis是Apache软件基金会的一个开源项目,它是一个强大的SOAP(简单对象访问协议)引擎,用于构建和部署Web服务。Axis的主要功能包括: 1. **...

    Axis1,Axis2,Xfire,CXF区别

    从开发者的角度,两个框架的特性相当的不同。Axis2 的开发方式类似一个小型的应用服务器,而 CXF 的开发方式更加灵活。Axis2 支持多语言,除了 Java,还支持 C/C++版本。CXF 只支持 JAXB 和 Aegis。 Axis1, Axis2, ...

    Web Services发布与调用(axis,xfire)

    本文主要探讨了使用Axis和XFire这两个工具来实现这一目标,它们都是Java平台上的Web Service框架,提供了创建、部署和调用Web Service的能力。 **一、使用Axis和XFire发布Web Service** 1.1 **准备工作** 在开始...

    WebService Axis和XFire(CXF)的开发流程

    本篇主要介绍两种常用的WebService框架——Axis和XFire(现已被CXF合并)的开发流程。 1. **Axis**:Axis是Apache软件基金会开发的开源SOAP WebService框架,它支持多种编程语言,如Java、Python等。Axis以其良好的...

    spring+axis2_xfire整合的webservice

    在此,我们将深入探讨Axis2和XFire这两个框架的特点以及它们与Spring的整合。 1. **Axis2框架**: - Axis2是Apache软件基金会开发的下一代SOAP引擎,它是Axis1.x的升级版,但采用了全新的架构,旨在提高模块化、...

    xfire接口程序,包含xfire服务端和axis客户端

    在IT行业中,接口程序是系统间通信的关键,而xfire和axis是两种广泛使用的Java Web服务框架,它们在实现服务端和客户端交互方面扮演着重要角色。本项目名为"xfire接口程序,包含xfire服务端和axis客户端",旨在提供...

    Web+Services发布与调用(axis,xfire).doc

    在本文中,我们将深入探讨两种流行的Web服务框架——Axis和XFire,以及如何使用它们来发布和调用Web服务。 一、Web服务基础 Web服务基于开放的标准,如SOAP(Simple Object Access Protocol)、WSDL(Web Services ...

    web service ppt

    XFire是Java平台上的Web Service框架,而Axis则提供1.x和2.x两个版本,用于生成和部署Web Service。此外,Web Service的相关技术还包括AJAX(Asynchronous JavaScript and XML)用于增强用户体验,JMS(Java Message...

    Web Service开发指南

    在本指南中,我们将深入探讨如何使用AXIS和xfire、cxf这两个流行的Java库来开发Web Service。 **AXIS工具包** AXIS是Apache软件基金会的一个项目,主要用于简化Web Service的开发、部署和调用。AXIS提供了一个强大...

    Web Service开发指南.pdf

    - AXIS是Apache软件基金会开发的一个开源Java Web Service框架,用于快速构建SOAP客户端和服务端。 - AXIS支持自动代码生成,可以将Java类转化为WSDL,或者从WSDL生成Java服务端代码。 - AXIS处理SOAP消息,提供...

    cxf_axis_xfire客户端调用的几种方法[收集].pdf

    CXF、AXIS2、XFire是三种流行的Java Web服务框架,它们允许开发者创建和消费Web服务。在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会...

    Web_Service开发指南

    本指南将深入探讨AXIS、XFire和CXF这三个流行的Java Web Service框架,为初学者提供入门级的开发指导。 一、Web Service基础 Web Service的核心概念是通过SOAP(Simple Object Access Protocol)消息在互联网上交换...

    MyEclipse 开发部署 Web Service

    接下来,我们将重点讨论xfire和axis,这两个都是流行的Java Web服务框架。 1. Xfire:Xfire是一个轻量级、快速的Web服务框架,它使用JAX-RPC(Java API for XML-RPC)和JAXB(Java Architecture for XML Binding)...

    基础平台使用手册-Web Service

    **简介**:Apache CXF是一个开源的Web服务框架,它融合了XFire和CXF两个项目,提供了SOAP、RESTful、JAX-RS和JAX-WS等多种服务实现。 **主要特性**: - **多协议支持**:除了SOAP,还支持RESTful API。 - **JAX-RS...

    Web service框架

    Apache CXF 是一个强大的开源 Web Service 框架,它源自 Celtix 和 XFire 两个项目,目前已经成为 Apache 软件基金会的顶级项目。CXF 提供了全面的支持,包括 JAX-WS、多种 Binding、DataBinding、Transport 以及...

Global site tag (gtag.js) - Google Analytics