(四)输入参数与输出类型为复杂类型的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 ...
随机推荐
- OpenGL ES: (2) OpenGL ES 与 EGL、GLSL的关系
OpenGL ES 是负责 GPU 工作的,目的是通过 GPU 计算,得到一张图片,这张图片在内存中其实就是一块 buffer,存储有每个点的颜色信息等.而这张图片最终是要显示到屏幕上,所以还需要具体 ...
- redis配置文件讲解
#redis.conf # Redis configuration file example. # ./redis-server /path/to/redis.conf ############### ...
- Ionic4.x 中的 UI 组件(UI Components)表单相关组件
1.ion-input 单行文本框 2.ion-toggle 开关 3.ion-radio-group.ion-radio 单选按钮组 4.ion-checkbox 多选按钮组 5.ion-selec ...
- [Java复习] 设计模式 Design Pattern
设计模式的六大原则 1.开闭原则(Open Close Principle) 对扩展开放,对修改关闭. 2.里氏代换原则(Liskov Substitution Principle) 任何基类可以出现 ...
- Qt编写自定义控件58-直方对称图
一.前言 本控件也非原创控件,是参考网上的代码而来的,对称顾名思义就是将画布平均成上下两部分,将设置的值自动按照画布高度的一半作为参照高度进行绘制,然后增加动态过渡效果,有点类似于声音播放时候的频谱效 ...
- WebDriver介绍
Fetching a Page driver.get("http://www.google.com") Locating UI Elements (WebElements) By ...
- 123457123457#0#-----com.yimeng.TouNaoWangZhe--前拼后广--brain游戏one
com.yimeng.TouNaoWangZhe--前拼后广--brain游戏one
- laravel门面DB返回数组配置
在数据库配置文件中添加 'fetch' => PDO::FETCH_ASSOC, //但是这个配置好像是全局的,不能针对单个数据库连接进行配置 也可以在方法内使用php内置函数get_objec ...
- SLAM十四讲中Sophus库安装
Sophus截止目前有很多版本,其中大体分为两类,一种是用模板实现的方法,一种是用非模板类实现的,SLAM十四讲中使用的是非模板类库,clone Sophus: git clone http://gi ...
- 01.轮播图之二 :tableView 轮播
在做这个tablevew轮播的时候,重要的就是修改frame 和view 的翻转了:::: 也是不难的,概要的设计和scroll 轮播是一致的: 首先是 .h 的文件 @interface Table ...