`
eksliang
  • 浏览: 598584 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAX-WS

阅读更多

转载请出自出处: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所需包,亲测可用

    标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发Java RESTful Web服务(JAX-RS)和Java SOAP Web服务(JAX-WS)所需的库文件。这些库是Java应用程序进行Web服务交互的核心组件,确保了对HTTP协议...

    jax-ws api jar包

    - **可扩展性**:支持WS-Security、WS-ReliableMessaging等高级Web服务协议,以满足安全性、可靠性的需求。 5. **与JAX-RPC的区别:** - JAX-WS是JAX-RPC的后续版本,它在设计上更注重简洁性和性能,且更符合现代...

    解决weblogic部署JAX-WS需要的配置文件

    在WebLogic服务器上部署JAX-WS服务时,可能会遇到一些配置问题。JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS...

    Jax-ws所需要的JAR包

    Java API for XML Web Services(JAX-WS)是Java平台上用于构建和消费Web服务的标准API。它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到...

    JAX-WS所需Jar包

    标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...

    JAX-WS2.0 API

    JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...

    jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api

    CXF框架提供了丰富的功能,包括SOAP、RESTful API、JAX-RS和JAX-WS等标准的实现。然而,在某些情况下,尤其是在使用Java 6的环境中,可能会遇到与内置JAXB(Java Architecture for XML Binding)库的兼容性问题。...

    JAX-WS API, JAX-RS API

    **JAX-WS API** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更...

    如何基于JAX-WS开发一个WebService实例

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...

    metro-jax-ws-jaxws221x.zip

    【标题】"metro-jax-ws-jaxws221x.zip" 提供的是一个关于JAX-WS(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...

    jax-ws发布webservice

    Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。...在"jax-ws-server"和"jax-ws-client"这两个目录中,你可以找到完整的示例代码,帮助你理解和实践JAX-WS的使用。

    JAX-WS2.1用户指南

    JAX-WS支持WS-Security标准,提供了对Web服务的安全性增强,包括消息认证、加密和签名等,确保通信安全。 8. **错误处理** JAX-WS提供了统一的异常处理机制,能够捕获和处理Web服务调用过程中的各种错误。 9. **...

    设计与开发 JAX-WS 2.0 Web 服务

    - **提高互操作性**:由于JAX-WS支持WS-I Basic Profile 1.1等标准,因此使用该技术构建的Web服务可以与使用不同语言和技术栈构建的服务无缝交互。 - **数据绑定支持**:通过集成JAXB(Java Architecture for XML ...

    jax-ws2.1.zip

    2. **webservices-extra.jar** - 此文件可能包含JAX-WS的一些扩展或额外功能,如WS-I(Web Services Interoperability)支持,或者对特定Web服务协议的实现,例如WS-Security(Web Services Security)或其他厂商...

    Jax-ws RI.zip

    此外,JAX-WS还提供了一些高级特性,如WS-I Basic Profile兼容性,以确保跨平台互操作性;WS-Security用于安全的Web服务通信;以及WS-ReliableMessaging和WS-Addressing等,增强了消息传递的可靠性和寻址能力。 总...

    jax-ws步骤

    **Java JAX-WS 步骤详解** Java JAX-WS (Java API for XML Web Services) 是一种标准的 Java 框架,用于创建和消费 Web 服务。它简化了 Web 服务的开发过程,无需复杂的配置文件,而是通过注解来定义服务接口和服务...

    jax-ws webservice简单demo

    Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得开发者能够使用Java编程语言来创建、调用和部署SOAP(Simple Object Access Protocol)服务。...

    JAX-WS Web service

    **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

    在这个“webservice Demo注解+jax-ws”示例中,我们将深入探讨Web服务的注解使用以及基于Java API for XML Web Services (JAX-WS)的实现。 首先,让我们了解一下JAX-WS。它是Java平台的标准组件,用于创建和处理Web...

    jax-ws用户指南 pdf版

    ### JAX-WS 2.2 用户指南知识点详解 #### 概览 JAX-WS (Java API for XML Web Services) 是 Java 平台上用于开发和实现 Web 服务的官方标准之一。本用户指南详细介绍了 JAX-WS 2.2 版本的功能、编程模型以及如何...

Global site tag (gtag.js) - Google Analytics