(四)输入参数与输出类型为复杂类型的web服务
一、 服务端发布服务
1.1 定义复杂类型:UserBean.java
package service;
public class UserBean {
private String userId;
private String userName;
private String passWord;
//隐藏getset方法
}
1.2 定义服务接口 :UserService.java
package service; import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; /**
* 这是一个web服务
* @author Administrator
*
*/
@WebService
public interface UserService { /**
* 获取用户
* @return
*/
@WebResult(name = "getUserResult")
public UserBean getUser(); /**
* 设置用户
* @param user
*/
public void setUser(@WebParam(name = "userBean") UserBean user);
}
1.3 定义服务实现类
package service; import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; @WebService(endpointInterface="service.UserService")
public class UserServiceimpl implements UserService { @Override
public UserBean getUser() {
UserBean user = new UserBean();
user.setPassWord("123");
user.setUserId("001");
user.setUserName("服务端返回的用户");
return user;
} @Override
public void setUser(UserBean user) {
if (user != null) {
System.out.println("客户端设置的用户=" + user);
} } }
1.4 发布服务
package publish;
import javax.xml.ws.Endpoint;
import service.UserServiceimpl;
public class TestPublish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:3030/userBean", new UserServiceimpl());
System.out.println("发布成功.....");
}
}
二、客户端接受、发送消息到服务端
2.1 用工具生成客户端代码(具体步骤参照上一章)

2.2 发送、接收消息
package test; import java.rmi.RemoteException; import service.UserBean;
import service.UserService;
import service.UserServiceProxy; public class TestMain {
public static void main(String[] args) throws RemoteException { /**
* 获取服务端返回的用户
*/
UserService userService=new UserServiceProxy().getUserService();
UserBean user=userService.getUser();
System.out.println(user.getUserId()+"\t"+user.getUserName()); /**
* 客户端设置用户
*/ UserBean userbean=new UserBean();
userbean.setUserId("2");
userbean.setUserName("客户端设置的用户");
userbean.setPassWord("123520");
new UserServiceProxy().setUser(userbean); }
}
结果:


- 注意:于普通的 Java 数据类型、JavaBean、List 而言,SOAP 服务可以完全将其处理(序列化与反序列化),这些都没有任何问题,但对于 Map 对象而言,不能再放其他复杂类型。
- 一般来说,参数只传字符串类型,因为web服务可以不同语言调用的,而java复杂类型其他语言可能没有,但是所有语言共有字符串类型。而传递的字符串可以将数据封装成json/xml格式的字符串,然后客户端接收到json/xml格式的字符串再进行解析即可。
(四)输入参数与输出类型为复杂类型的web服务的更多相关文章
- Mybatis框架四:输入参数、输出参数
输入参数可以有三种:简单类型,POJO,包装类 关于前两种: http://www.cnblogs.com/xuyiqing/p/8600888.html 这里写一下传递包装类参数: 一个POJO:U ...
- mybatis入门基础(四)----输入映射和输出映射
一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 1.1.传递pojo的包装对象 1.1.1.需求描述 完成用户信息的综合查询, ...
- (三)CXF之处理输入参数与输出类型为复杂类型的webService服务
一.需求 调用webService服务,把用户名和密码封装为用户对象作为参数,返回该用户所用友的角色列表. 二.发布服务 2.1 编写服务接口 @WebService public interface ...
- 存储过程: 存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。
存储过程示例一: 执行存储过程方法一: 执行存储过程方法二: 存储过程可以定义返回值: 修改存储过程: 利用存储过程查找三个表内的信息: 练习: 超市管理系统:表一:门店仓库表 MenDian ...
- Mybatis输入映射和输出映射
本节内容: 输入参数映射 输出映射 resultMap Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 一.环境准备 复制 ...
- js数据类型的检测总结,附面试题--封装一个函数,输入任意,输出他的类型
一.javascript 中有几种类型的值 1.基本数据类型 : 包括 Undefined.Null.Boolean.Number.String.Symbol (ES6 新增,表示独一无二的值) 特点 ...
- Hibernate调用带有输入参数,输出参数为cursor的存储过程
一.Oracle创建表及存储过程 1.创建表T_MONITOR_DEVICE 创建后的表结构 2.创建存储过程 create or replace procedure ProcTestNew(v_mo ...
- Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——My ...
- Mybatis学习总结(四)——输入映射和输出映射
在前面几篇文章的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...
随机推荐
- 连接池大小调优 原创: ImportNew ImportNew 2017-06-07
连接池大小调优 原创: ImportNew ImportNew 2017-06-07
- IOS APP开发入门案例
1.创建新项目 2.设计布局,main.storyboard中,在控件库中 3.布局控件关联控制器 4.设置事件或者显示模式 5.编写代码: import UIKit class ViewContro ...
- Java多线程中thread.getname()和thread.currentThread().getName();的去别
首先要明白 this.XXX 的使用场景 使用Thread.currentThread().getName()和使用this.getName()和对象实例.getName(),都可以得到线程的名称,但 ...
- Mybase解决保存文件后再打开不能修改编辑
1.问题复现 2.解决方式 3.可以修改编辑
- 如何使用 AWS Auto Scaling 按需动态增加和减少实例
目录 一.背景需求 二.配置步骤 2.1.创建 AMI 2.2.创建负载均衡目标组 2.3.创建 Classic Load Balancer 2.4.创建启动配置 2.5.创建 Auto Scalin ...
- 【Kail 学习笔记】自用KAIL更新源
打开 /etc/apt/source.list 添加-保存即可 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contr ...
- 🔥Scratch少儿编程——飞机大战
前两天用
- centos6.5搭建rabbitmq服务器(单机)
安装编译工具 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 安装Erlang 1. 下载erl ...
- 权限管理ranger
为超级管理员airflow赋权: 在ranger 中的hive中加入root policy, url policy 在hdfs中加入/ 的poclicy 你如果需要自动ldap同步,时间1小时,ran ...
- 安卓版 WPS 使用电脑字体、安卓版 WPS 添加字体、安卓 WPS 无法显示文档真实字体(24)
1. 前言 安卓版WPS默认只有那么几种字体,查看电脑的Office文档无法显示文档的真实字体.想要用更多的字体需要开会员,这里提供免费方案. 2. 操作步骤 1.先在手机中打开一个要查看的文档: 2 ...