- 浏览: 492932 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (301)
- Swing技术 (1)
- Linux (1)
- Javascript (22)
- 数据结构和算法 (3)
- J2SE (36)
- workflow (5)
- 设计模式 (14)
- web service (19)
- Ajax (14)
- 中间件 & 服务器 (8)
- 多线程 (9)
- Oracle (52)
- sys & soft (10)
- JMS (3)
- sso (9)
- android (11)
- struts2 (10)
- web协议 (2)
- 分布式 (2)
- PM (2)
- OLAP (3)
- Redis (2)
- Hibernate (7)
- ibatis (2)
- SQLServer (1)
- maven (3)
- Spring (7)
- Jsp (2)
- slf4j (1)
- jQuery (15)
- 权限 (1)
- 系统集成 (1)
- 笔记 (1)
- Freemarker (2)
- 项目管理 (1)
- eclipse (3)
- GIS (1)
- NoSql (3)
- win10 (1)
- win10网络 (2)
- 底层 (3)
- 数据库 (0)
最新评论
-
kabuto_v:
请问那种图,uml图是怎么画出来的呢?是您自己手工画的,还是有 ...
FastJSON 序列化、反序列化实现 -
梦行Monxin商城系统:
电商实例、业务并发、网站并发及解决方法 -
rockethj8:
client 㓟有一个参数是可以忽略一些URL 不进行验证登录 ...
SSO 之 (单点登录)实施中遇到的几个问题 -
mengxiangfeiyan:
好啊。。。。。
Oracle删除表,删除数据以及恢复数据、利用现有表创建新表
从客户端除了传递字符串以外还可以传递复杂对象(对象必须序列化了),List,Map,数组和文件。
(1)定义一个对象实现了serializable 接口
package cn.com.chenlly.ssh.webservice.axis;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Class Address.java
* @Description
* @Copyright (c) 2010, 正辰科技有限公司 All rights reserved.
* @Author Chenlly
* @Version 1.0
* @Date Apr 19, 2010 5:03:23 PM
*/
public class Address implements Serializable {
private Integer identifier;
private String address;
private String city;
private String province;
private String country;
private String []array;
private List<Integer> list;
private boolean isExst;
//constructor
public Address(){
list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
}
public Integer getIdentifier() {
return identifier;
}
public void setIdentifier(Integer identifier) {
this.identifier = identifier;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String[] getArray() {
return array;
}
public void setArray(String[] array) {
this.array = array;
}
public List<Integer> getList() {
return list;
}
public void setList(List<Integer> list) {
this.list = list;
}
public boolean isExst() {
return isExst;
}
public void setExst(boolean isExst) {
this.isExst = isExst;
}
}
(2)定义server-config.wsdd文件
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper" />
<handler name="wsTestHandler"
type="java:cn.com.chenlly.ssh.webservice.axis.WSTestServiceHandle">
<parameter name="status" value="success" />
</handler>
<!-- 自定义服务 -->
<service name="ws" provider="java:RPC">
<parameter name="className"
value="cn.com.chenlly.ssh.webservice.axis.WSTestServiceImpl" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
<responseFlow>
<handler type="wsTestHandler" />
</responseFlow>
<requestFlow>
<handler type="wsTestHandler" />
</requestFlow>
<beanMapping qname="myNSD:Address"
xmlns:myNSD="urn:AddressManager"
languageSpecificType="java:cn.com.chenlly.ssh.webservice.axis.Address">
</beanMapping>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>
//主要是<beanMapping>标签中名字空间和qname写法
第一个你自定义的命名空间和第二个节点本地部分会组成一个新的QName。
在IE 中打开链接
http://192.168.1.98:8082/SSHProject/services/ws?wsdl
生成的WSDL有如下一段
- <schema targetNamespace="urn:AddressManager" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://192.168.1.98:8082/SSHProject/services/ws" />
<import namespace="http://xml.apache.org/xml-soap" />
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="Address">
- <sequence>
<element name="address" nillable="true" type="soapenc:string" />
<element name="array" nillable="true" type="impl:ArrayOf_soapenc_string" />
<element name="city" nillable="true" type="soapenc:string" />
<element name="country" nillable="true" type="soapenc:string" />
<element name="exst" type="xsd:boolean" />
<element name="identifier" nillable="true" type="soapenc:int" />
<element name="list" nillable="true" type="impl:ArrayOf_xsd_anyType" />
<element name="province" nillable="true" type="soapenc:string" />
</sequence>
</complexType>
</schema>
这个新的schema就是把对象序列化以后生成了xml流文件。
(3) webService 服务方法
public Address dealAddress(Address address) {
System.out.println("service exst:"+address.isExst());
//客户端对象传递过来设置标志为true
address.setExst(true);
return address;
}
(4) 客户端
package cn.com.chenlly.ssh.webservice.axis;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
/**
* @Class WSTestService.java
* @Description 客户端调用远程的service
* @Copyright (c) 2010, 正辰科技有限公司 All rights reserved.
* @Author Chenlly
* @Version 1.0
* @Date Apr 9, 2010 3:57:26 PM
*/
public class WSTestServiceClient {
public static void main(String[] args) {
Service service = new Service();
try {
Call call = (Call) service.createCall();
String url = "http://192.168.1.98:8082/SSHProject/services/ws?wsdl";
call.setTargetEndpointAddress(new java.net.URL(url));
//定义对象
Address address = new Address();
address.setIdentifier(1);
address.setProvince("湖南");
address.setCity("长沙");
address.setExst(false);
QName qn = new QName("urn:AddressManager", "Address");//第一个参数名字空间URI,第二个参数本地部分,注意这两部分在server-config.wsdd文件中标签beanMapping配置
call.registerTypeMapping(Address.class, qn,
new BeanSerializerFactory(Address.class, qn),//序列化
new BeanDeserializerFactory(Address.class, qn));
call.setOperationName(new QName(url,"dealAddress"));
call.addParameter("arg0", qn, ParameterMode.IN);//定义一个参数类型,如果是String类型的参数可以不需要这句话
call.setReturnClass(Address.class);//指定返回类型
Address result = (Address) call.invoke(new Object[]{address});//这里传递给service的是一个对象
System.out.println(result.isExst());
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在服务器端打印的isExst()方法是false;然后设置address的exst为true;最后又传送到客户端打印的result结果为true
(1)定义一个对象实现了serializable 接口
package cn.com.chenlly.ssh.webservice.axis;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Class Address.java
* @Description
* @Copyright (c) 2010, 正辰科技有限公司 All rights reserved.
* @Author Chenlly
* @Version 1.0
* @Date Apr 19, 2010 5:03:23 PM
*/
public class Address implements Serializable {
private Integer identifier;
private String address;
private String city;
private String province;
private String country;
private String []array;
private List<Integer> list;
private boolean isExst;
//constructor
public Address(){
list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
}
public Integer getIdentifier() {
return identifier;
}
public void setIdentifier(Integer identifier) {
this.identifier = identifier;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String[] getArray() {
return array;
}
public void setArray(String[] array) {
this.array = array;
}
public List<Integer> getList() {
return list;
}
public void setList(List<Integer> list) {
this.list = list;
}
public boolean isExst() {
return isExst;
}
public void setExst(boolean isExst) {
this.isExst = isExst;
}
}
(2)定义server-config.wsdd文件
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper" />
<handler name="wsTestHandler"
type="java:cn.com.chenlly.ssh.webservice.axis.WSTestServiceHandle">
<parameter name="status" value="success" />
</handler>
<!-- 自定义服务 -->
<service name="ws" provider="java:RPC">
<parameter name="className"
value="cn.com.chenlly.ssh.webservice.axis.WSTestServiceImpl" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
<responseFlow>
<handler type="wsTestHandler" />
</responseFlow>
<requestFlow>
<handler type="wsTestHandler" />
</requestFlow>
<beanMapping qname="myNSD:Address"
xmlns:myNSD="urn:AddressManager"
languageSpecificType="java:cn.com.chenlly.ssh.webservice.axis.Address">
</beanMapping>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>
//主要是<beanMapping>标签中名字空间和qname写法
第一个你自定义的命名空间和第二个节点本地部分会组成一个新的QName。
在IE 中打开链接
http://192.168.1.98:8082/SSHProject/services/ws?wsdl
生成的WSDL有如下一段
- <schema targetNamespace="urn:AddressManager" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://192.168.1.98:8082/SSHProject/services/ws" />
<import namespace="http://xml.apache.org/xml-soap" />
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="Address">
- <sequence>
<element name="address" nillable="true" type="soapenc:string" />
<element name="array" nillable="true" type="impl:ArrayOf_soapenc_string" />
<element name="city" nillable="true" type="soapenc:string" />
<element name="country" nillable="true" type="soapenc:string" />
<element name="exst" type="xsd:boolean" />
<element name="identifier" nillable="true" type="soapenc:int" />
<element name="list" nillable="true" type="impl:ArrayOf_xsd_anyType" />
<element name="province" nillable="true" type="soapenc:string" />
</sequence>
</complexType>
</schema>
这个新的schema就是把对象序列化以后生成了xml流文件。
(3) webService 服务方法
public Address dealAddress(Address address) {
System.out.println("service exst:"+address.isExst());
//客户端对象传递过来设置标志为true
address.setExst(true);
return address;
}
(4) 客户端
package cn.com.chenlly.ssh.webservice.axis;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
/**
* @Class WSTestService.java
* @Description 客户端调用远程的service
* @Copyright (c) 2010, 正辰科技有限公司 All rights reserved.
* @Author Chenlly
* @Version 1.0
* @Date Apr 9, 2010 3:57:26 PM
*/
public class WSTestServiceClient {
public static void main(String[] args) {
Service service = new Service();
try {
Call call = (Call) service.createCall();
String url = "http://192.168.1.98:8082/SSHProject/services/ws?wsdl";
call.setTargetEndpointAddress(new java.net.URL(url));
//定义对象
Address address = new Address();
address.setIdentifier(1);
address.setProvince("湖南");
address.setCity("长沙");
address.setExst(false);
QName qn = new QName("urn:AddressManager", "Address");//第一个参数名字空间URI,第二个参数本地部分,注意这两部分在server-config.wsdd文件中标签beanMapping配置
call.registerTypeMapping(Address.class, qn,
new BeanSerializerFactory(Address.class, qn),//序列化
new BeanDeserializerFactory(Address.class, qn));
call.setOperationName(new QName(url,"dealAddress"));
call.addParameter("arg0", qn, ParameterMode.IN);//定义一个参数类型,如果是String类型的参数可以不需要这句话
call.setReturnClass(Address.class);//指定返回类型
Address result = (Address) call.invoke(new Object[]{address});//这里传递给service的是一个对象
System.out.println(result.isExst());
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在服务器端打印的isExst()方法是false;然后设置address的exst为true;最后又传送到客户端打印的result结果为true
发表评论
-
rest 之 主题笔记
2014-03-22 09:59 7931、Web 服务主要有三种形式:SOAP、REST 和 RPC ... -
架构Web Service 之 描述与注册,发布Web服务
2013-06-12 19:31 0架构Web Service: 描述与注 ... -
soap wsdl
2013-06-12 19:29 0Web Service概述 Web Service的定义 ... -
Axis2 之 开发Java Web服务
2013-06-12 19:28 0概述 本文介绍了一个比较简单实用的基于Java的S ... -
Axis2 之 利用JiBX把XML转换Web服务
2013-06-12 19:18 0[ http://blog.csdn.net/phantomh ... -
AXIS2 之 Axis序列化/反序列化器开发指南
2013-06-12 19:15 0薛谷雨 rainight@126.com 联系。 http:/ ... -
Axis2 之 复合类型数据的传递
2013-06-12 18:50 0axis2开发指南 http://www.360doc.com ... -
Axis 之 soap wsdl
2013-06-12 18:01 0http://www.mohappy.com/blog/use ... -
Axis1.4
2013-06-12 17:58 0http://www.blogjava.net/xiaodao ... -
Axis 之 开发详细注释
2013-06-12 17:55 0http://www.360doc.com/content/1 ... -
Axis 之 WebService测试,开发,部署
2013-06-12 17:52 0带抓图的word文档在:http://618119.com/d ... -
Axis 之 axis三种开发方式
2013-06-12 17:43 1491Tomcat+Axis+Eclipse实例讲解 一、 ... -
在AXIS服务间传递JavaBean及其安全解决
2013-06-12 17:17 2592-------------------1、AXIS学习笔记-- ... -
web Service客户端调用
2013-06-12 16:30 0客户端调用 目前我用了2种调用方法 Client.java p ... -
利用HttpURLConnection实现SOAP调用
2013-05-26 21:42 6258我们完全可以利用J2SE中 ... -
WebService总结1
2012-09-28 23:31 1144web service大致有三 ... -
JAVA中三种WebService规范及底层实例
2012-09-28 23:19 3725http://www.360doc.com/conte ... -
WebService大讲堂系列之Axis2
2012-09-28 01:28 951http://www.360doc.com/conte ... -
Axis2+wsdl2java.bat生成客户端调用
2012-09-28 00:45 27607http://www.360doc.com/c ... -
使用Eclipse的Axis1.4插件开发Web Service及客户端
2012-09-27 23:47 948http://www.360doc.com/conte ...
相关推荐
微信小程序Artandw_eapp-artand
本项目是一款基于Vue和JavaScript开发的心旅途个性化推荐旅游平台设计源码,整合了513个Java文件、76个PNG图片、70个XML配置文件、62个JavaScript文件、42个Vue组件文件、28个CSS样式文件、22个HTML文件、18个YAML配置文件、16个属性文件、11个Vue模板文件,总计919个文件。平台采用现代化前端技术堆栈,旨在为用户提供个性化的旅游推荐服务。
微信小程序开发地图演示、地图导航、标记标注_echat-weapp-mpdemo
Vue和Axios文件
该项目为基于Python语言开发的HTML与任务清单关系系统,包含50个文件,其中16个为HTML文件,14个为Python源代码文件,其余包括Python编译文件、Markdown文件、图片、数据库文件、配置文件、模板文件、文本文件等,旨在为用户提供简单便捷的生活时间段安排及任务规划管理工具。
全国大学生电子设计大赛项目合集全国电赛优秀作品大学生电子竞赛历届题目
该项目是一款基于Python和pygame引擎开发的植物大战僵尸游戏,包含125个文件,涵盖93个PNG图像文件、11个Python源代码文件、10个Python字节码文件、8个GIF动画文件、1个Git忽略配置文件、1个JSON数据文件以及1个Markdown说明文件。游戏设计源码为学习游戏开发提供了丰富的实践素材。
本项目是一款以Java为核心开发的Qiniu服务端设计源码整合的RunFlow桌面端效率工具,总文件数29个,包括17个Java源文件、2个属性文件、1个Git忽略文件、1个JAR包文件、1个LICENSE文件、1个Markdown文件、1个YAML文件、1个Maven配置文件和1个命令文件。该工具旨在提升工作效率,适用于各种桌面环境下的便捷使用。
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
Golang支付-微信公众号、微信应用、微信小程序、微信企业支付、支付宝网络版、支付宝应用、支付宝企业支付_支付宝
医疗辅助诊断系统-开题
该项目为东东购物网的后台开发源码,采用JavaScript为主要编程语言,辅以CSS、Java、HTML等多种语言,共包含1300个文件。具体文件类型分布如下:458个PNG图片文件、215个JavaScript文件、160个JPG图片文件、159个GIF图片文件、107个CSS样式表文件、96个Java源代码文件、28个HTML文件、24个XML文件、12个JSON文件、8个Map文件。该系统旨在提供高效、便捷的购物后台管理功能。
content_1728052071778.apk
资源视频编辑软件win781064位系统
职业心理测试人格气质情绪控制测试18个文件
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
该项目为基于Python语言的微信小程序源码,全面整合了JavaScript和微信小程序开发技术。项目结构包含50个文件,涵盖了15个PNG图片、9个JSON配置、8个JavaScript脚本、7个wxss样式表、6个WXML模板和4个JPG图片。此外,还包括1个Markdown文档。该小程序的设计与实现展现了Python编程的强大能力,适用于微信生态下的各类应用场景。
全国大学生电子设计大赛项目合集全国电赛优秀作品电赛B题风力摆控制系统设计(原理图+源代码+设计报告等)
基于西门子S7-200PLC的自动灌溉系统组态王组态 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
该项目是基于GitHub平台的xClouds-device项目设计源码,包含2835个文件,包括763个头文件、630个C语言源文件、207个文本文件、144个Makefile文件、102个Python脚本、86个Markdown文件、70个二进制文件、59个实验文件、50个Shell脚本、48个项目构建脚本。该项目主要使用C语言编写,辅以Python、Shell、C++和C++等语言,适合进行设备控制和云平台交互开发。