`
eksliang
  • 浏览: 592385 次
  • 性别: 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-WS自学笔记

    JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL...

    JAX-WS 2.2 RI所有相关jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    JAX-WS开发的文件生成与部署相关全视频过程

    如果基于一个JAX-WS进行WebService开发,有很多教程,但是具体怎么更自动地生成一些文件,实现客户端与服务端的交互,都讲得不大清楚,为了让大家更方便地部署,我将服务端、客户端文件的生成与部署全过程以及测试...

    webService部署tomcat需要的jax-ws jar包

    webService部署tomcat需要的jax-ws 的完整jar包

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    Jax-ws所需要的JAR包

    亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    JAX-WS 2.2 完整jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    使用JAX-WS(JWS)发布WebService

    使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...

    JAX-WS2.0 API

    JAX-WS2.0 API

    metro-jax-ws-master

    The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs. It's a part of the ...

    Jax-WS 简单实例

    Jax-WS的简单实例 Jax-WS的简单实例

    jax-ws 方式发布web Service 后台用Hibernate实现,前端.NET通过引用服务方式实现

    rar中包含整个项目的源码和数据库生成脚本,采用jax-ws发布Web Service服务,支持java客户端和.Net客户端调用,数据库采用oracle10g,里面有创建数据库脚本文件createTable_Oracle10g.sql,由于Hibernate映射表中会...

    JAX-WS Web service

    JAX-WS Web service 开发初步

    jax-ws webservice简单demo

    jax-ws webservice完整demo,包含所有jax-ws 2.2jar包。

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    jax-ws创建webservice

    利用myeclipse创建的 jax-ws demo

    jax-ws json demo

    jax-ws demo.分享一个从别处得到的helloworld demo

    JAX-WS2.2.6包

    JAX-WS规范是一组XML web services的JAVA API

Global site tag (gtag.js) - Google Analytics