webService 使用复杂对象及集合,在实际企业应用中经常使用
1. 服务端程序
package java_soa.getUser2.server; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class GetUserXx { /** * 获取用户对象(userbean) * @param user * @param address * @param flag * @return */ public UserBean getUser1(String user,String address, boolean flag){ return new UserBean(user,address,flag); } /** * 返回多个用户对象(list集合对象) * @param num * @return */ public List<UserBean> getUser2(int num){ List<UserBean> list1=new ArrayList<UserBean>(); UserBean user1= new UserBean(); for (int i=0;i<num;i++){ user1.setUsername("张三"); user1.setAddress("北京市朝阳区"); user1.setFlag(true); list1.add(user1); } return list1; } public static void main(String[] args) { //发布soa地址 Endpoint.publish("http://192.168.8.121:8095/java6ws/java_soa.server.GetUserXx", new GetUserXx()); } }
用户对象
package java_soa.getUser2.server; public class UserBean { /** * 用户信息 */ private String username; private String address; private boolean flag; public UserBean() { } public UserBean(String username, String address, boolean flag) { this.username = username; this.address = address; this.flag = flag; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } }
2. 发布服务端程序后,wsimport 生成客户端代码
文件目录
3. 客户端代码
package java_soa.getUser2.getClient; import java.util.List; import java_soa.getUser2.wsclient.GetUserXx; import java_soa.getUser2.wsclient.GetUserXxService; import java_soa.getUser2.wsclient.UserBean; public class GetUserXxClient { /** * 客户端调用(webService) */ public static void main(String[] args) { GetUserXx UserXx = new GetUserXxService().getGetUserXxPort(); UserBean use1 = new UserBean(); use1 = UserXx.getUser1("张三", "南京市", false); String name = use1.getUsername(); String addr = use1.getAddress(); System.out.println("SOA 取出用户对象 name=="+name+"addr=="+addr ); List<UserBean> list2 =UserXx.getUser2(5); for(int i=0;i<list2.size();i++){ use1 = list2.get(i); int m = i+1; System.out.println("SOA取出第"+m+"条用户信息!"+use1.getUsername()+" "+use1.getAddress()); } } }
4. 返回正确的参数,说明调用正常
5、总结
这里面其实有些细节,需要说明白:
1)、对于复杂对象,必须有一个不带参数的构造方法。
2)、服务端覆盖Object的方法不能在客户端复原,比如toString方法。
3)、服务端的带参数构造方法在客户端失效。
以上三点是非常重要的,如果不知道会很郁闷,老出错还找不到原因。
相关推荐
WebService是Web服务的一种标准协议,它允许不同系统之间的应用程序通过Internet进行通信。XFire是Java平台上的一款开源...理解这些概念对于开发基于XFire的Web服务至关重要,尤其是在处理大量数据或复杂对象结构时。
4. 在Eclipse中新建项目,编写服务器端的Java代码,通过注解或配置文件声明WebService接口和服务实现。 通过AXIS2,开发者可以轻松地创建和发布WebService,同时AXIS2提供了丰富的功能,如WS-Security、MTOM和SwA等...
4. **jaxb-api.jar**: Java Architecture for XML Binding (JAXB) 是JAX-WS的一部分,用于将Java对象与XML文档相互转换,是数据序列化的一种方式。 5. **stax-api.jar**: Streaming API for XML (StAX) 提供了一种...
- **Java API使用:** 学习标准Java库的使用方法,如集合框架、日期时间API等。 - **数据结构及算法基础:** 掌握基本的数据结构(如数组、链表、树、图)和常见算法(排序、查找)。 - **Java AWT图形界面程序开发...
- **JDK(Java Development Kit)**: Java开发工具包,包含了编译、调试等工具。 - **JVM(Java Virtual Machine)**: Java虚拟机,负责执行Java字节码。 - **Eclipse**: 常用的Java集成开发环境之一。 - **...
Java EE(Enterprise Edition)5是Java平台上用于构建企业级应用的框架,它为开发者提供了丰富的服务和组件模型,以简化开发、部署和管理大型分布式应用程序的过程。本PPT旨在为初学者提供一个全面的入门指南,帮助...
JDK是Java开发的基础,包含了Java运行环境(JRE)及Java开发工具。 - **Eclipse IDE**:掌握如何使用Eclipse进行Java程序的编写、调试和部署。Eclipse是一款广泛使用的Java集成开发环境(IDE),支持代码编辑、调试、...
- **Java的开发与运行环境安装配置**:熟悉Java开发工具包(JDK)的安装过程,了解如何设置环境变量。 - **Java基本语法**:掌握Java中的关键字、变量、数据类型、运算符等基础知识。 - **Java编码惯例**:学习并...
Java Web服务是应用...此外,它还涵盖了如何处理复杂类型,如实体类和集合类,这些都是Java Web服务开发中的基础技能。这个项目对于初学者来说是一个很好的实践平台,能够帮助他们深入理解Web服务的工作原理和应用。
总结来说,"webservice插件项目包.zip"是一个包含XFire相关组件的集合,用于简化Java项目中的Web服务实现,特别是跨项目的方法调用。这个插件通过注解驱动的方式,使得开发者能够快速地创建和部署Web服务,从而提高...
### Java从入门到精通知识点梳理 #### 一、Java核心概念 **1. 环境搭建** - **Java的历史**: Java由...以上是从Java基础知识到高级应用的全面梳理, 旨在帮助学习者建立坚实的技术基础, 并逐步深入到实际项目开发中。
通过以上步骤的学习,可以全面掌握Java开发所需的技能,为成为一名合格的Java开发人员打下坚实的基础。需要注意的是,学习过程中应注重实践,通过实际项目来巩固所学知识,这样才能更好地应对未来的挑战。
- 复杂类型参数:如自定义对象,可能需要序列化和反序列化。 - 数组和集合参数:测试如何传递和接收多个值。 - 异常处理:检查服务端抛出的异常是否能被客户端捕获和处理。 5. **Readme.txt** Readme文件通常...
通过这种方式,XFire简化了Java开发Web服务的过程,使得开发者可以专注于业务逻辑,而不是复杂的Web服务实现。此外,由于XFire与Spring、Pico、Plexus等容器的兼容性,它也可以轻松集成到现有的企业级应用中,提供...
Java Swing 是Java GUI(图形用户界面)开发的一个关键库,用于构建桌面应用程序。它提供了丰富的组件集合,可以创建美观、功能强大的用户界面。在C/S(客户端/服务器)模式下,Swing通常作为客户端的部分,负责与...
### Java-笔试题集锦详解 #### 1. MVC的各个部分都有哪些技术来实现?如何实现? ...这些知识点覆盖了Java笔试题集锦中提到的主要内容,希望能帮助您更好地理解和掌握Java开发的相关概念和技术。
在这个主题中,我们将深入探讨CXF WebService所需的最小jar包集合,以及如何利用这些库来开发Web服务。 首先,CXF的核心功能依赖于一系列的jar包,这些jar包包含了处理不同协议、数据绑定、WS-Security等关键组件的...