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

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

配置webservice具体步骤:

1.     安装weblogic。

2.     配置一个web应用,如“"lijunjiee$softwareeauser_projectsdomainslijjdomainapplications 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文件中如下的配置:

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

开发webservice流程

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

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

<?xml version="1.0" encoding="UTF-8"?>

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<globalConfiguration>

<parameter name="adminPassword" value="admin"/>

<parameter name="attachments.Directory" value="C:eclipseworkspaceookstoreWEB-INFattachments"/>

<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>

<parameter name="sendXsiTypes" value="true"/>

<parameter name="sendMultiRefs" value="true"/>

<parameter name="sendXMLDeclaration" value="true"/>

<parameter name="axis.sendMinimizedElements" value="true"/>

<requestFlow>

<handler type="java:org.apache.axis.handlers.JWSHandler">

<parameter name="scope" value="session"/>

</handler>

<handler type="java:org.apache.axis.handlers.JWSHandler">

<parameter name="scope" value="request"/>

<parameter name="extension" value=".jwr"/>

</handler>

</requestFlow>

</globalConfiguration>

<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>

<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>

<service name="Version" provider="java:RPC">

<parameter name="allowedMethods" value="getVersion"/>

<parameter name="className" value="org.apache.axis.Version"/>

</service>

<!--要配置的内容start,注意每一个要发布成webservice的类都要配置成一个service如下à

<service name="webserviceproxy" provider="java:RPC">

<parameter name="className" value="com.copia.webservice.server.proxy.WebServiceProxy"/>

<parameter name="allowedMethods" value="*"/>

<!—具体某个方法说明-->

<operation name="login" returnType="ns:LoginOutServiceBean">

<parameter name="branchNo" type="xsd:string"/>

<parameter name="userId" type="xsd:string"/>

<parameter name="password" type="xsd:string"/>

<parameter name="certificateNo" type="xsd:string"/>

</operation>

<!—如果该方法的参数有基本类型和对象类型,则不要声明,webservice能够找到相关的类及方法-->

<!—声明涉及到的所有类及其父类,引用类,还有它们的相关类,类似与对象树遍历,某个类声明缺失也会导致运行失败-->

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:LoginOutServiceBean"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.module.security.login.LoginOutServiceBean" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:User"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.client.User" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:GetBatchListInServiceBean"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.module.batch.service.GetBatchListInServiceBean" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:GetBatchListOutServiceBean"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.module.batch.service.GetBatchListOutServiceBean" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:BatchJobDefBean"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.module.batch.service.BatchJobDefBean" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:ValueObjectPage"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.voa.ValueObjectPage" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:ValueObjectColInfo"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.voa.ValueObjectColInfo" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:ValueObjectList"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.voa.ValueObjectList" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:PageInfo"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.voa.PageInfo" xmlns:ns="webserviceproxy"/>

<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

qname="ns:ValueObjectMetaData"

serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

type="java:com.copia.core.voa.ValueObjectMetaData" xmlns:ns="webserviceproxy"/>

</service>

<!--要配置的内容endà

<service name="AdminService" provider="java:MSG">

<parameter name="allowedMethods" value="AdminService"/>

<parameter name="enableRemoteAdmin" value="false"/>

<parameter name="className" value="org.apache.axis.utils.Admin"/>

<namespace>http://xml.apache.org/axis/wsdd/</namespace>

</service>

<transport name="local">

<responseFlow>

<handler type="LocalResponder"/>

</responseFlow>

</transport>

<transport name="http">

<requestFlow>

<handler type="URLMapper"/>

<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

</requestFlow>

</transport>

</deployment>

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

Java webservice客户端编程

1.         启动你配置好的weblobic。

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

E:kk>java -Djava.ext.dirs=E:softwareeauser_projectsdomainslijjdomainappl

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

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

public class TestWs {

public static void main(String[] args) {

WebServiceProxyService service = new WebServiceProxyServiceLocator();

try {

WebServiceProxy serviceProxy = service.getwebserviceproxy();

User user = new User();

user.setBranchNo("000001");

user.setClerkNo("1004");

GetBatchListInServiceBean in = new GetBatchListInServiceBean();

in.setCurPageNo(1);

String serviceName = "GetBatchListService";

GetBatchListOutServiceBean out = (GetBatchListOutServiceBean)serviceProxy.getBatchListService(user, in, serviceName);

BatchJobDefBean[] defBeans = out.getBatchJobDefBeans();

for(int i = 0 ; i < defBeans.length ; i++){

System.out.println(defBeans[i].getBatchName());

}

}catch(Exception ex){

ex.printStackTrace();

}

}

}

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

联系作者: lijj_72@hotmail.com

转载于:https://www.cnblogs.com/cy163/archive/2008/03/09/1097169.html

用axis开发webservice实践相关推荐

  1. axis 开发webservice

    摘要:本节主要用于介绍使用axis开发webservice,包括服务端的创建.webservice的部署.客户端的调用. preparation: 说明:相关的可能要了解SOAP(简单对象访问协议). ...

  2. 利用AXIS开发Webservice(三) —— 如何传递JavaBean和你的对象

    http://blog.csdn.net/chnic/archive/2008/03/14/2179827.aspx(原文) 这几天貌似战斗力无穷,趁着有精力就多更新两篇.随着对Axis的研究加深,越 ...

  3. 用Java 开发 WebService Axis简单实例

    用 Java 开发 WebService Axis 简单实例 在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发 ...

  4. Webservice实践(二)Webservice 客户端开发

    现在我们首先进行客户端开发的实践,从客户端实践来了解一下webservice的应用场景.比如说现在已经有一个webservice服务,提供的翻译方面的功能服务(主要是免费的webservice接口现在 ...

  5. MyEclipse下XFire开发Webservice实例

    最近在研究JAVA开发Webservice,发现网络上比较流行的几种选择AXIS.XFire.CFX(XFire的下一代),前几天转了几篇关于这三种选择的比较的文章,对它们已经有了些概念.决定自己实践 ...

  6. java开发webservice的几种方式

    为什么80%的码农都做不了架构师?>>>    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis ...

  7. java webservice 依赖_java开发webservice的几种方式

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...

  8. cxf开发webservice服务端怎么返回固定的报文格式_Spring boot webservice怎么玩? 第277篇...

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列?) WebService SOAP概述 - 第275篇 WSDL是什么"Lese" - 第276篇 一.前言 当官不为民做主 ...

  9. IDEA开发WebService遇到的问题和SOAPUI工具的使用

    在用idea开发webService时遇到了一个奇怪的问题.先是使用自带的 Axis 把服务器端建立好后,直接根据wsdl生成客户端 在测试过程中却出了问题,我的提供服务的方法有5个参数,在客户端请求 ...

最新文章

  1. 安装java时,配置环境变量classpath的作用
  2. MapReduce源码分析之JobSplitWriter
  3. thymeleaf 判断页面不显示_Thymeleaf 中 Spring Security 的使用 0151
  4. 微软宣布SQL Server 2019免费支持Java
  5. Linux驱动开发中与设备树相关的6种debug方法
  6. oralce insert 时,出现的两个错误,以及解决方法
  7. java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
  8. Mybatis原生dao开发方法实现增删改查
  9. eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等...
  10. 罗永浩承认鸟巢发布会不成功,还说苹果把大家都带歪了,你怎么看?
  11. off-by-one
  12. PHP:Fatal error: Class 'COM' not found in … 的处理办法
  13. Spring Boot整合JPA
  14. Apache Log4j使用实例
  15. GBase 8c 开发接口
  16. java-喝饮料换空瓶问题
  17. ZeroMemory、memset 和 “={0}” 三者区别
  18. 程序员必须学会的《软技能》
  19. 数据流图-2(分层数据流图)
  20. 全部实行“申请―考核”制!北京师范大学博士招生明确规定!

热门文章

  1. 怎么使用java初始化链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
  2. 里bl2和bl3为什么分开_施工现场乙炔瓶为什么必须直立?乙炔为什么不能用尽?........
  3. Android 三方库okhttp、gson、glide的使用
  4. python为什么从0开始_为什么大多数编程语言中,索引都是从0开始
  5. 卸载MySQL Connector NET无法卸载
  6. 004_JSONArray对象公共方法
  7. 怎么用class引入svg_【蓝湖指北】走向设计巅峰,从蓝湖 Sketch 插件开始,用它!...
  8. php代码冗余度检查插件,冗余代码检测与处理使用什么工具
  9. Java数据结构和算法:位运算
  10. python的lambda函数_Python-Lambda函数的范围及其参数?