axis实现webservice 返回对象和数组
来源:互联网 发布:天人网络电视在线 编辑:程序博客网 时间:2024/06/05 15:42
axis1传递简单对象,对象内只有基本类型,如:String,int等
1.创建一个javaBean,类名为User。
Java代码
- package com.devtek;
- publicclass User {
- private String name="llc";
- privateint age = 25;
- public String toString() {
- return"name " + name + " age " + age ;
- }
- publicint getAge() {
- return age;
- }
- publicvoid setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- publicvoid setName(String name) {
- this.name = name;
- }
- }
2. 服务端编写。
Java代码
- package com.devtek;
- publicclass ServiceServer {
- // 参数和返回值不包含对象
- public String getName(String name) {
- if (name == null) {
- name = "";
- }
- return"你好" + name + ",欢迎来到Web服务的世界!";
- }
- public String getUserName(User user) {
- return user.getName();
- }
- public User getUser(String name, String password) {
- returnnew User();
- }
- // 返回简单的对象(只包含基本的类型)
- public User getUser(User user) {
- System.out.println(user.getName());
- return user;
- }
- }
3. 发布服务,在server-confing.wsdd文件中进行配置。
Java代码
- <?xml version="1.0" encoding="UTF-8" ?>
- <deployment name="defaultClientConfig"
- xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
- xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"
- xmlns="http://xml.apache.org/axis/wsdd/">
- <globalConfiguration name="defaultClientConfig">
- <requestFlow name="RequestFlow1" type="">
- <handler name="Handler1"
- type="java:org.apache.axis.handlers.JWSHandler">
- <parameter name="scope" value="session" />
- </handler>
- <handler name="Handler2"
- type="java:org.apache.axis.handlers.JWSHandler">
- <parameter name="scope" value="request" />
- <parameter name="extension" value=".jwr" />
- </handler>
- </requestFlow>
- </globalConfiguration>
- <handler name="URLMapper"
- type="java:org.apache.axis.handlers.http.URLMapper" />
- <handler name="LocalResponder"
- type="java:org.apache.axis.transport.local.LocalResponder" />
- <handler name="Authenticate"
- type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
- <transport name="http" type="">
- <requestFlow name="RequestFlow1" type="">
- <handler name="Handler1" type="URLMapper" />
- <handler name="Handler2"
- type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
- </requestFlow>
- </transport>
- <transport name="local" type="">
- <responseFlow name="ResponseFlow1" type="">
- <handler name="Handler1" type="LocalResponder" />
- </responseFlow>
- </transport>
- <!--这里配置了一个Web Service,如果有多个Web Service,就按这种格式在下面增加即可-->
- <service name="User" provider="java:RPC">
- <!-- 作用域 -->
- <parameter name="scope" value="Request" />
- <!-- 发布的webservice类名 -->
- <parameter name="className" value="com.devtek.ServiceServer" />
- <!-- 发布webservice方法,value="*"'*'代表所有, 如果不想发布所有的方法,可以在
- value 中,每个方法用空格分开,如发布两个方法:value="getUserName getUser"
- -->
- <parameter name="allowedMethods" value="*" />
- <!-- 对象映射,一对象为参数或返回值 -->
- <beanMapping languageSpecificType="java:com.devtek.User"
- qname="ns1:User" xmlns:ns1="com.devtek" />
- <!-- 类型映射,将对象进行序列化(out)和反序列化(in) -->
- <typeMapping languageSpecificType="java:com.devtek.User"
- qname="ns1:User" xmlns:ns1="com.devtek"
- deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
- serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
- <namespace>com.devtek</namespace>
- </service>
- </deployment>
4. 客户端调用。
Java代码
- package com.devtek;
- import javax.xml.namespace.QName;
- 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;
- publicclass Client {
- publicstaticvoid main(String[] args) {
- try {
- String endpoint = "http://127.0.0.1:8089/axis1/webservices/User?wsdl";
- Service service = new Service();
- Call call = null;
- QName qn = new QName("http://127.0.0.1:8089/axis1/webservices/User",
- "getUser");
- call = (Call) service.createCall();
- // 注册序列化和反序列化类
- call.registerTypeMapping(User.class, qn,
- new BeanSerializerFactory(User.class, qn),
- new BeanDeserializerFactory(User.class, qn));
- // 设置返回类型
- call.setReturnType(qn, User.class);
- call.setOperationName(qn);
- call.setTargetEndpointAddress(new java.net.URL(endpoint));
- call.addParameter("user", qn, javax.xml.rpc.ParameterMode.IN);
- User user = new User();
- User ret = (User) call.invoke(new Object[] { user });
- System.out.println("return value is " + ret);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
1. 在服务类serviceServer中增加一个方法:
public User[] getUserList(User[] user) {
return user;
}
2. 在server-config.wsdd的<service>中增加一个<arrayMapping>标签,标签内配置自定义对象数组。
<!-- 配置自定义对象数组type,将对象数组进行序列化和反序列化 -->
<arrayMapping languageSpecificType="java:com.devtek.User[]"
qname="ns1:User" xmlns:ns1="com.devtek"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
3. 客户端调用。
Java代码
- publicstaticvoid main(String[] args) {
- User[] ret = null;
- try {
- String endpoint = "http://127.0.0.1:8089/axis1/webservices/User?wsdl";
- Service service = new Service();
- Call call = null;
- QName qn = new QName("http://127.0.0.1:8089/axis1/webservices/User",
- "getUserList");
- call = (Call) service.createCall();
- // 注册序列化和反序列化类
- call.registerTypeMapping(User.class, qn,
- new BeanSerializerFactory(User.class, qn),
- new BeanDeserializerFactory(User.class, qn));
- // 设置返回类型
- call.setReturnType(qn, User[].class);
- // 设置方法
- call.setOperationName(qn);
- call.setTargetEndpointAddress(new java.net.URL(endpoint));
- call.addParameter("user", qn, javax.xml.rpc.ParameterMode.IN);
- User[] user = new User[]{new User(),new User()};
- ret = (User[]) call.invoke(new Object[] { user });
- System.out.println("return value is " + (User)ret[1]);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return ret;
- }
- axis实现webservice 返回对象和数组
- axis实现webservice 返回对象
- axis webservice返回List 对象数组
- Axis接收远程调用c# webservice返回的数组
- axis webservice 传输 定长对象数组 取代 list, map方式
- Tomcat+Axis实现webservice
- axis实现webservice
- axis实现webservice
- axis实现webservice
- axis实现webservice服务
- axis实现webservice
- axis利用wsdl生成webservice服务器端和客户端代码实现
- axis webservice 的实现原理
- java实现webservice axis实例
- spring 整合 axis 实现webservice
- WebService(Axis)服务器端返回附件
- axis调用webservice 返回xml解析
- axis调用webservice传递数组,接收数组
- cramfs
- [平衡树]BallIntheBox
- 推荐系统的循序进阶读物(从入门到精通)
- 第6周任务2
- The Dirichlet Distribution 狄利克雷分布 (PRML 2.2.1)
- axis实现webservice 返回对象和数组
- 第六周 任务一
- 从配置文件里读取数据,实现多数据库连接
- FileZilla客户端实现分析
- Your project contains errors, but there is no red cross marks
- 游标存储过程练习4
- Pro *C/C++学习笔记
- jquery事件练习
- 关于Jsp里面的几个内置对象