分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

(四)输入参数与输出类型为复杂类型的web服务

发布时间:2023-09-06 01:17责任编辑:熊小新关键词:暂无标签

一、  服务端发布服务

  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 * */@WebServicepublic 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服务

原文地址:http://www.cnblogs.com/shyroke/p/7655255.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved