`

用axis开发webservice实践

阅读更多

原文http://www.cnblogs.com/showna/articles/523038.html

什么是SOAP?

  SOAP是一个基于XML的用于应用程序之间通信数据编码的传输协议。最初由微软和Userland Software提出,随着不断地完善和改进,SOAP很快被业界广泛应用。

  什么是Axis?

  Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。

  配置webservice具体步骤:

  1.安装weblogic。

  2.配置一个web应用,如“\\lijunjie\e$\software\bea\user_projects\domains\lijjdomain\applications\ cntapws “。

  3.从apache网站上下载axis-bin-1_2_1.tar.gz,解压后copy到cntapws下面。

  4.打开“http://localhost:7001/console“,配置cntapws 的web应用。

  5.axis1.2和weblogic8.1有冲突,原因是weblogic 本身携带的webservice.jar使用的旧的javax.xml.soap.*,而不是像axis使用J2EE1.4新的版本。解决方案是在WEB-INF/weblogic.xml文件中如下的配置:

    <weblogic-web-app>
 <container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
 

  6.按 http://localhost:8080/axis/happyaxis.jsp地址,可以显示你发布的webservice是否配置成功,如果显示必须的包缺失,则你的webservice不能正常运行。

  开发webservice流程

  1.写普通的java类,该类中有你要发布到webservice上的有关方法。

  2.配置server-comfig.xml, 把你要发布的方法写入该文件。具体内容如下:

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
  4.   
  5.  <globalConfiguration>  
  6.   
  7.   <parameter name="adminPassword" value="admin"/>  
  8.   
  9.   <parameter name="attachments.Directory" value="C:\eclipse\workspace\bookstore\WEB-INF\attachments"/>  
  10.   
  11.   <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>  
  12.   
  13.   <parameter name="sendXsiTypes" value="true"/>  
  14.   
  15.   <parameter name="sendMultiRefs" value="true"/>  
  16.   
  17.   <parameter name="sendXMLDeclaration" value="true"/>  
  18.   
  19.   <parameter name="axis.sendMinimizedElements" value="true"/>  
  20.   
  21.   <requestFlow>  
  22.   
  23.    <handler type="java:org.apache.axis.handlers.JWSHandler">  
  24.   
  25.     <parameter name="scope" value="session"/>  
  26.   
  27.    </handler>  
  28.   
  29.    <handler type="java:org.apache.axis.handlers.JWSHandler">  
  30.   
  31.     <parameter name="scope" value="request"/>  
  32.   
  33.     <parameter name="extension" value=".jwr"/>  
  34.   
  35.    </handler>  
  36.   
  37.   </requestFlow>  
  38.   
  39.  </globalConfiguration>  
  40.   
  41.  <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>  
  42.   
  43.  <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>  
  44.   
  45.  <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>  
  46.   
  47.  <service name="Version" provider="java:RPC">  
  48.   
  49.   <parameter name="allowedMethods" value="getVersion"/>  
  50.   
  51.   <parameter name="className" value="org.apache.axis.Version"/>  
  52.   
  53.  </service>  
  54.   
  55.  <!--要配置的内容start,注意每一个要发布成webservice的类都要配置成一个service如下à   
  56.   
  57.  <service name="webserviceproxy" provider="java:RPC">  
  58.   
  59.        <parameter name="className" value="com.copia.webservice.server.proxy.WebServiceProxy"/>  
  60.   
  61.        <parameter name="allowedMethods" value="*"/>  
  62.   
  63. <!—具体某个方法说明-->  
  64.   
  65.        <operation name="login" returnType="ns:LoginOutServiceBean">  
  66.   
  67.               <parameter name="branchNo" type="xsd:string"/>  
  68.   
  69.               <parameter name="userId" type="xsd:string"/>  
  70.   
  71.               <parameter name="password" type="xsd:string"/>  
  72.   
  73.               <parameter name="certificateNo" type="xsd:string"/>      
  74.   
  75.        </operation>  
  76.   
  77. <!—如果该方法的参数有基本类型和对象类型,则不要声明,webservice能够找到相关的类及方法-->  
  78.   
  79. <!—声明涉及到的所有类及其父类,引用类,还有它们的相关类,类似与对象树遍历,某个类声明缺失也会导致运行失败-->  
  80.   
  81.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  82.   
  83.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  84.   
  85.        qname="ns:LoginOutServiceBean"  
  86.   
  87.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  88.   
  89.        type="java:com.copia.core.module.security.login.LoginOutServiceBean" xmlns:ns="webserviceproxy"/>  
  90.   
  91.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  92.   
  93.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  94.   
  95.        qname="ns:User"  
  96.   
  97.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  98.   
  99.        type="java:com.copia.core.client.User" xmlns:ns="webserviceproxy"/>  
  100.   
  101.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  102.   
  103.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  104.   
  105.        qname="ns:GetBatchListInServiceBean"  
  106.   
  107.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  108.   
  109.        type="java:com.copia.core.module.batch.service.GetBatchListInServiceBean" xmlns:ns="webserviceproxy"/>  
  110.   
  111.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  112.   
  113.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  114.   
  115.        qname="ns:GetBatchListOutServiceBean"  
  116.   
  117.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  118.   
  119.        type="java:com.copia.core.module.batch.service.GetBatchListOutServiceBean" xmlns:ns="webserviceproxy"/>  
  120.   
  121.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  122.   
  123.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  124.   
  125.        qname="ns:BatchJobDefBean"  
  126.   
  127.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  128.   
  129.        type="java:com.copia.core.module.batch.service.BatchJobDefBean" xmlns:ns="webserviceproxy"/>          
  130.   
  131.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  132.   
  133.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  134.   
  135.        qname="ns:ValueObjectPage"  
  136.   
  137.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  138.   
  139.        type="java:com.copia.core.voa.ValueObjectPage" xmlns:ns="webserviceproxy"/>  
  140.   
  141.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  142.   
  143.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  144.   
  145.        qname="ns:ValueObjectColInfo"  
  146.   
  147.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  148.   
  149.        type="java:com.copia.core.voa.ValueObjectColInfo" xmlns:ns="webserviceproxy"/>  
  150.   
  151.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  152.   
  153.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  154.   
  155.        qname="ns:ValueObjectList"  
  156.   
  157.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  158.   
  159.        type="java:com.copia.core.voa.ValueObjectList" xmlns:ns="webserviceproxy"/>  
  160.   
  161.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  162.   
  163.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  164.   
  165.        qname="ns:PageInfo"  
  166.   
  167.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  168.   
  169.        type="java:com.copia.core.voa.PageInfo" xmlns:ns="webserviceproxy"/>  
  170.   
  171.        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"      
  172.   
  173.        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  174.   
  175.        qname="ns:ValueObjectMetaData"  
  176.   
  177.        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"  
  178.   
  179.        type="java:com.copia.core.voa.ValueObjectMetaData" xmlns:ns="webserviceproxy"/>  
  180.   
  181.    </service>  
  182.   
  183. <!--要配置的内容endà   
  184.   
  185.  <service name="AdminService" provider="java:MSG">  
  186.   
  187.   <parameter name="allowedMethods" value="AdminService"/>  
  188.   
  189.   <parameter name="enableRemoteAdmin" value="false"/>  
  190.   
  191.   <parameter name="className" value="org.apache.axis.utils.Admin"/>  
  192.   
  193.   <namespace>http://xml.apache.org/axis/wsdd/</namespace>  
  194.   
  195.  </service>  
  196.   
  197.  <transport name="local">  
  198.   
  199.   <responseFlow>  
  200.   
  201.    <handler type="LocalResponder"/>  
  202.   
  203.   </responseFlow>  
  204.   
  205.  </transport>  
  206.   
  207.  <transport name="http">  
  208.   
  209.   <requestFlow>  
  210.   
  211.    <handler type="URLMapper"/>  
  212.   
  213.    <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>  
  214.   
  215.   </requestFlow>  
  216.   
  217.  </transport>  
  218.   
  219. </deployment>  

  3.在地址栏输入http://localhost:7001/cntapws/services/webserviceproxy?wsdl,如没有什么错误,则表示你的webservice发布成功了。

  Java  webservice客户端编程

  1.启动你配置好的weblobic。

  2.进入dos界面,在你的临时目录(任意目录)下根据wsdl产生客户文件,如下指令:

E:\kk>java -Djava.ext.dirs=E:\software\bea\user_projects\domains\lijjdomain\appl

ications\axis\WEB-INF\axislib org.apache.axis.wsdl.WSDL2Java http://localhost:7001/cntapws/services/webserviceproxy?wsdl即可在kk目录下产生有关文件。

  3.把产生的文件copy到你的工程中,再写一个webservice调用测试类,如下:

java 代码
  1. public class TestWs {   
  2.   
  3.        public static void main(String[] args) {   
  4.   
  5.               WebServiceProxyService service = new WebServiceProxyServiceLocator();   
  6.   
  7.               try {   
  8.   
  9.                      WebServiceProxy serviceProxy = service.getwebserviceproxy();   
  10.   
  11.                      User user = new User();   
  12.   
  13.                      user.setBranchNo("000001");   
  14.   
  15.                      user.setClerkNo("1004");   
  16.   
  17.                      GetBatchListInServiceBean in = new GetBatchListInServiceBean();   
  18.   
  19.                      in.setCurPageNo(1);                  
  20.   
  21.                      String serviceName = "GetBatchListService";   
  22.   
  23.                      GetBatchListOutServiceBean out = (GetBatchListOutServiceBean)serviceProxy.getBatchListService(user, in, serviceName);   
  24.   
  25.                      BatchJobDefBean[] defBeans = out.getBatchJobDefBeans();   
  26.   
  27.                     for(int i = 0 ; i < defBeans.length ; i++){   
  28.   
  29.                             System.out.println(defBeans[i].getBatchName());   
  30.   
  31.                      }   
  32.   
  33.               }catch(Exception ex){   
  34.   
  35.                      ex.printStackTrace();   
  36.   
  37.               }   
  38.   
  39.        }   
  40.   
  41. }  

这样,我们就完成了webservice的全部工作。大功告成了

分享到:
评论

相关推荐

    axis 开发webservice经典入门例子

    标题 "axis 开发webservice经典入门例子" 指向的是使用Apache Axis工具来创建和使用Web服务的基本教程。Apache Axis是开源的Java框架,它允许开发者轻松地在Java应用程序中构建和部署Web服务。本教程可能是为了帮助...

    axis2webservice接口例子

    关于标签,“axis2”和“webservice”,这两个标签分别对应了Web服务开发的两个关键元素。Apache Axis2是Web服务的实现框架,而Web服务本身则是一种允许不同系统之间交换数据的标准协议。在Java开发中,Axis2常被...

    axis 发布webservice的步骤

    为了更好地理解和实践这些步骤,可以参考给定的文档“Eclipse开发Axis_WebService实例总结_20100430.doc”。这个文档通常会包含详细的步骤、截图以及可能遇到的问题和解决方案,对于初学者非常有帮助。 总结,发布...

    Axis开发WebService 指南

    本文将深入探讨如何利用Axis开发WebService,以及相关的技术要点。 首先,了解WebService的基础概念是至关重要的。WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网应用程序,它能够跨平台、跨语言地...

    AXIS入门指南-webservice

    本指南旨在为初学者提供AXIS框架下开发WebService的详细步骤,涵盖了从获取开发资源、生成 stub、编写服务器端代码到客户端测试的全过程。AXIS是一个开源的Java库,它提供了创建、部署和使用Web服务的工具,是基于...

    Axis实现webservice完整实例

    Axis 是 Apache 组织开发的 Java WebService 工具包,它简化了 WebService 的开发过程。Axis 支持 SOAP 1.1 和 1.2,以及 WSDL 1.1 标准,允许开发者快速创建服务端和客户端代码。 ### 3. Axis 服务端实现 - **...

    axis2开发webservice

    Axis2是Apache软件基金会开发的一款用于构建Web服务的开源框架,它基于SOAP协议,并且支持WS-*标准。本文将深入探讨使用Axis2开发Web服务的相关...深入理解和实践这些知识点,对于提升Web服务开发能力具有重要作用。

    axis发布webservice教程源代码

    【描述】中的重复内容可能是在强调该教程的重要性,意味着它可能提供了深入且反复实践的指导,帮助学习者全面掌握Axis发布Web服务的技术。Axis在Web服务领域中扮演着关键角色,因为它简化了SOAP(简单对象访问协议)...

    java axis webservice 开发实例

    Java Axis WebService 开发实例详解 在Java世界中,开发Web服务时,Axis是一个非常流行的开源工具,它允许开发者创建、部署和使用Web服务。本实例将深入探讨如何使用Axis来构建一个简单的Web服务,并进行调用。这个...

    Axis和WebService配置使用之Hello

    标题中的“Axis和WebService配置使用之Hello”表明我们将探讨如何在Java环境中使用Axis库来创建和使用Web服务,实现一个简单的“Hello World”示例。 Axis是一个开源的Java SOAP(简单对象访问协议)工具包,它允许...

    spring+axis集成webservice

    本文将深入探讨如何使用Spring与Axis进行集成,以便开发和消费Web服务。 首先,让我们了解Spring和Axis的基本概念。Spring是一个开源Java框架,它为构建灵活、模块化且可测试的应用程序提供了强大的支持。它包含多...

    axis 实现 webservice 例子

    Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web服务,它为开发人员提供了方便的方式来实现这些服务。本篇文章将深入讲解如何使用Apache Axis1.4实现Web服务。 首先,我们需要理解Axis1.4的特点。...

    axis2 webService 详细教程

    【标题】"Axis2 WebService 详细教程"涵盖了在Java环境中使用Apache Axis2框架创建、部署和使用Web服务的核心概念和技术。Apache Axis2是Apache软件基金会开发的一个强大的Web服务引擎,它提供了高度优化的Web服务...

    Axis2 webservice server plugin

    通过安装Axis2 WebService服务器插件,开发者可以在MyEclipse中直接进行Axis2相关的开发工作,无需离开IDE,提高开发效率。该插件提供了一套完整的工具集,包括代码生成器、服务发布、调试等功能,使开发者能够无缝...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    axis1.4及webService开发教程

    Axis1.4是Apache软件基金会提供的一个开源工具,专门用于开发和部署Web服务。本教程将详细讲解如何使用Axis1.4进行Web服务的开发,包括创建服务端和客户端。 首先,我们需要了解Web服务的基本概念。Web服务是通过...

    AXIS2 WebService

    AXIS2 WebService是一个流行的开源Java框架,用于创建和部署Web服务。它是Apache Axis项目的一部分,专注于提供高效、灵活且可扩展的Web服务解决方案。在本文中,我们将深入探讨AXIS2的核心特性、如何使用它来开发...

    axis1.4开发webservice

    标题中的“axis1.4开发webservice”指的是使用Apache Axis1.4框架创建Web服务的过程。Apache Axis是Java中广泛使用的开源工具,用于实现SOAP(简单对象访问协议)Web服务。Axis1.4是该工具的一个版本,它支持Java-to...

    axis2开发webservice心得

    ### Axis2 开发WebService心得 在进行WebService的开发过程中,特别是在使用Axis2框架时,往往会遇到各种挑战与难题。本文将结合实践经验,分享在使用Axis2进行WebService开发时的一些心得和解决方案,希望能够帮助...

Global site tag (gtag.js) - Google Analytics