用axis开发webservice实践
什么是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实践相关推荐
- axis 开发webservice
摘要:本节主要用于介绍使用axis开发webservice,包括服务端的创建.webservice的部署.客户端的调用. preparation: 说明:相关的可能要了解SOAP(简单对象访问协议). ...
- 利用AXIS开发Webservice(三) —— 如何传递JavaBean和你的对象
http://blog.csdn.net/chnic/archive/2008/03/14/2179827.aspx(原文) 这几天貌似战斗力无穷,趁着有精力就多更新两篇.随着对Axis的研究加深,越 ...
- 用Java 开发 WebService Axis简单实例
用 Java 开发 WebService Axis 简单实例 在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发 ...
- Webservice实践(二)Webservice 客户端开发
现在我们首先进行客户端开发的实践,从客户端实践来了解一下webservice的应用场景.比如说现在已经有一个webservice服务,提供的翻译方面的功能服务(主要是免费的webservice接口现在 ...
- MyEclipse下XFire开发Webservice实例
最近在研究JAVA开发Webservice,发现网络上比较流行的几种选择AXIS.XFire.CFX(XFire的下一代),前几天转了几篇关于这三种选择的比较的文章,对它们已经有了些概念.决定自己实践 ...
- java开发webservice的几种方式
为什么80%的码农都做不了架构师?>>> webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis ...
- java webservice 依赖_java开发webservice的几种方式
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...
- cxf开发webservice服务端怎么返回固定的报文格式_Spring boot webservice怎么玩? 第277篇...
相关历史文章(阅读本文之前,您可能需要先看下之前的系列?) WebService SOAP概述 - 第275篇 WSDL是什么"Lese" - 第276篇 一.前言 当官不为民做主 ...
- IDEA开发WebService遇到的问题和SOAPUI工具的使用
在用idea开发webService时遇到了一个奇怪的问题.先是使用自带的 Axis 把服务器端建立好后,直接根据wsdl生成客户端 在测试过程中却出了问题,我的提供服务的方法有5个参数,在客户端请求 ...
最新文章
- 安装java时,配置环境变量classpath的作用
- MapReduce源码分析之JobSplitWriter
- thymeleaf 判断页面不显示_Thymeleaf 中 Spring Security 的使用 0151
- 微软宣布SQL Server 2019免费支持Java
- Linux驱动开发中与设备树相关的6种debug方法
- oralce insert 时,出现的两个错误,以及解决方法
- java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
- Mybatis原生dao开发方法实现增删改查
- eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等...
- 罗永浩承认鸟巢发布会不成功,还说苹果把大家都带歪了,你怎么看?
- off-by-one
- PHP:Fatal error: Class 'COM' not found in … 的处理办法
- Spring Boot整合JPA
- Apache Log4j使用实例
- GBase 8c 开发接口
- java-喝饮料换空瓶问题
- ZeroMemory、memset 和 “={0}” 三者区别
- 程序员必须学会的《软技能》
- 数据流图-2(分层数据流图)
- 全部实行“申请―考核”制!北京师范大学博士招生明确规定!
热门文章
- 怎么使用java初始化链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
- 里bl2和bl3为什么分开_施工现场乙炔瓶为什么必须直立?乙炔为什么不能用尽?........
- Android 三方库okhttp、gson、glide的使用
- python为什么从0开始_为什么大多数编程语言中,索引都是从0开始
- 卸载MySQL Connector NET无法卸载
- 004_JSONArray对象公共方法
- 怎么用class引入svg_【蓝湖指北】走向设计巅峰,从蓝湖 Sketch 插件开始,用它!...
- php代码冗余度检查插件,冗余代码检测与处理使用什么工具
- Java数据结构和算法:位运算
- python的lambda函数_Python-Lambda函数的范围及其参数?