转载请出自出处:http://eksliang.iteye.com/blog/2265021
一、概述
WebService:WebService并不是一个软件,而是一个规范。这个规范与Jsp、Servlet、EJB规范类似。在实际应用中会使用很多WebService的具体实现,例如CXF、Axis2等等。webService规范使用了SOAP协议,对于一般开发人员来说,并不需要了解SOAP协议,SOAP消息的内容是标准的XML格式,SOAP消息一般通过HTTP协议进行传输,但是也可以通过其他协议,如:SMTP协议
Jax-Ws:就是Java标准的WebService,JDK1.6使用Jax-WS完全取代了Jax-RPC,成为Java的Web服务标准。
二、WebService的三要素
- SOAP:简单对象访问协议,基于XML的协议,用来描述传递信息的格式;同时也是交换数据的一种协议规范,它被设计成在WEB上交换结构化的和固化的信息。
- WSDL:用来描述如何访问具体的接口;
- UDDI:用来管理,分发,查询webService;
三、使用JAX-WS发布WebService
3.1.构造数据实体对象
import java.io.Serializable; import java.util.Date; import com.google.gson.Gson; /** * 在网络中传输的对象,必须序列化接口 * @author Ickes */ public class Users implements Serializable { private static final long serialVersionUID = 123L; private String userId; private String userName; private String userPwd; private Integer sex; private Float sal; private Date birthday; /* get set方法省略 */ public String toJson() { Gson gson = new Gson(); return gson.toJson(this); }
3.2、构造测试数据类
import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 获取构造数据进行测试 * @author Ickes */ public class UsersFactory { public static Users getUser(){ Users u1 = new Users(); u1.setBirthday(new Date()); u1.setSal(20F); u1.setSex(1); u1.setUserId("A001"); u1.setUserName("admin1"); u1.setUserPwd("123456"); return u1; } public static List<Users> getUsers() { Users u1 = new Users(); u1.setBirthday(new Date()); u1.setSal(20F); u1.setSex(1); u1.setUserId("A001"); u1.setUserName("admin1"); u1.setUserPwd("123456"); Users u2 = new Users(); u2.setBirthday(new Date()); u2.setSal(20F); u2.setSex(0); u2.setUserId("A002"); u2.setUserName("admin2"); u2.setUserPwd("123456"); Users u3 = new Users(); u3.setBirthday(new Date()); u3.setSal(60F); u3.setSex(1); u3.setUserId("A003"); u3.setUserName("admin3"); u3.setUserPwd("123456"); List<Users> users = new ArrayList<Users>(); users.add(u1); users.add(u2); users.add(u3); return users; } }
3.3、UserService接口类,用于发布服务的接口
import java.util.List; import com.gosun.jws.daomain.Users; /** * @author Ickes * */ public interface UserService { /** * 测试返回list * * @return */ public List<Users> geAlltUsers(); /** * 测试返回实体,以及传人普通参数 * * @param id * @return */ public Users getUser(String id); /*** * 测试传入对象 * * @param user */ public void save(Users user); /** * 测试传人集合 * * @param users */ public void saves(List<Users> users); }
3.4、UserService服务实现类
使用注解@WebService进行标识类,该类便是一个对外访问WebService,默认情况里面所有的public方法都是可以对外访问
import java.util.List; import javax.jws.WebService; import com.gosun.jws.daomain.Users; import com.gosun.jws.daomain.UsersFactory; @WebService() public class UserServiceImpl implements UserService { @Override public List<Users> geAlltUsers() { return UsersFactory.getUsers(); } @Override public Users getUser(String id) { System.out.println(id); return UsersFactory.getUser(); } @Override public void save(Users user) { System.out.println(user.toJson()); } @Override public void saves(List<Users> users) { for (Users u : users) { System.out.println(u.toJson()); } } }
3.5、服务器端发布
import javax.xml.ws.Endpoint; /** * 默认发布的是soap1.0的服务 * @author Ickes */ public class ServiceDemo { public static void main(String[] args) { String address ="http://localhost:8080/webservice"; //指定端口进行发布,如果是web服务,不能与当前web服务器的端口冲突 Endpoint.publish(address,new UserServiceImpl()); } }
4、客户端调用
使用jdk自带的wsimport命令进行生成客户端代码,语法如下
wsimport -p packageName -keep wsdl_address
例如执行如下代码,会在包com.gosun.jws.webservice.service.client目录下面生成调用http://localhost:8080/webservice?wsdl的源码跟java类
wsimport -p com.gosun.jws.webservice.service.client -keep http://localhost:8080/webservice?wsdl
客户端调用代码如下:
import java.util.List; /** * 客户端调用 * @author Ickes */ public class Main { public static void main(String[] args) { //在客户端示例化一个WebService UserServiceImplService usi = new UserServiceImplService(); //获取服务类型,get、post、soap 使用jdk发布仅仅只支持soap UserServiceImpl us = usi.getUserServiceImplPort(); Users user = us.getUser("a001"); System.out.println(user.getUserName()); System.out.println("----------------------------------------"); List<Users> users = us.geAlltUsers(); for (Users u : users) { System.out.println(u.getUserName()); } us.save(user); us.saves(users); } }
客户端打印如下:
admin1 ---------------------------------------- admin1 admin2 admin3
服务器端打印如下:
a001 {"userId":"A001","userName":"admin1","userPwd":"123456","sex":1,"sal":20.0,"birthday":"Dec 18, 2015 3:06:13 PM"} {"userId":"A001","userName":"admin1","userPwd":"123456","sex":1,"sal":20.0,"birthday":"Dec 18, 2015 3:06:13 PM"} {"userId":"A002","userName":"admin2","userPwd":"123456","sex":0,"sal":20.0,"birthday":"Dec 18, 2015 3:06:13 PM"} {"userId":"A003","userName":"admin3","userPwd":"123456","sex":1,"sal":60.0,"birthday":"Dec 18, 2015 3:06:13 PM"}
相关推荐
标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发Java RESTful Web服务(JAX-RS)和Java SOAP Web服务(JAX-WS)所需的库文件。这些库是Java应用程序进行Web服务交互的核心组件,确保了对HTTP协议...
- **可扩展性**:支持WS-Security、WS-ReliableMessaging等高级Web服务协议,以满足安全性、可靠性的需求。 5. **与JAX-RPC的区别:** - JAX-WS是JAX-RPC的后续版本,它在设计上更注重简洁性和性能,且更符合现代...
在WebLogic服务器上部署JAX-WS服务时,可能会遇到一些配置问题。JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS...
Java API for XML Web Services(JAX-WS)是Java平台上用于构建和消费Web服务的标准API。它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到...
标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...
JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...
CXF框架提供了丰富的功能,包括SOAP、RESTful API、JAX-RS和JAX-WS等标准的实现。然而,在某些情况下,尤其是在使用Java 6的环境中,可能会遇到与内置JAXB(Java Architecture for XML Binding)库的兼容性问题。...
**JAX-WS API** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...
【标题】"metro-jax-ws-jaxws221x.zip" 提供的是一个关于JAX-WS(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。...在"jax-ws-server"和"jax-ws-client"这两个目录中,你可以找到完整的示例代码,帮助你理解和实践JAX-WS的使用。
JAX-WS支持WS-Security标准,提供了对Web服务的安全性增强,包括消息认证、加密和签名等,确保通信安全。 8. **错误处理** JAX-WS提供了统一的异常处理机制,能够捕获和处理Web服务调用过程中的各种错误。 9. **...
- **提高互操作性**:由于JAX-WS支持WS-I Basic Profile 1.1等标准,因此使用该技术构建的Web服务可以与使用不同语言和技术栈构建的服务无缝交互。 - **数据绑定支持**:通过集成JAXB(Java Architecture for XML ...
2. **webservices-extra.jar** - 此文件可能包含JAX-WS的一些扩展或额外功能,如WS-I(Web Services Interoperability)支持,或者对特定Web服务协议的实现,例如WS-Security(Web Services Security)或其他厂商...
此外,JAX-WS还提供了一些高级特性,如WS-I Basic Profile兼容性,以确保跨平台互操作性;WS-Security用于安全的Web服务通信;以及WS-ReliableMessaging和WS-Addressing等,增强了消息传递的可靠性和寻址能力。 总...
**Java JAX-WS 步骤详解** Java JAX-WS (Java API for XML Web Services) 是一种标准的 Java 框架,用于创建和消费 Web 服务。它简化了 Web 服务的开发过程,无需复杂的配置文件,而是通过注解来定义服务接口和服务...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得开发者能够使用Java编程语言来创建、调用和部署SOAP(Simple Object Access Protocol)服务。...
**JAX-WS Web服务开发概述** JAX-WS(Java API for XML Web Services)2.0,由JSR 224定义,是Java EE 5平台的关键组成部分,它是JAX-RPC 1.1的升级版。JAX-WS的主要目标是简化基于XML的Web服务的开发任务,它提供...
在这个“webservice Demo注解+jax-ws”示例中,我们将深入探讨Web服务的注解使用以及基于Java API for XML Web Services (JAX-WS)的实现。 首先,让我们了解一下JAX-WS。它是Java平台的标准组件,用于创建和处理Web...
### JAX-WS 2.2 用户指南知识点详解 #### 概览 JAX-WS (Java API for XML Web Services) 是 Java 平台上用于开发和实现 Web 服务的官方标准之一。本用户指南详细介绍了 JAX-WS 2.2 版本的功能、编程模型以及如何...