码迷,mamicode.com
首页 > 其他好文 > 详细

详解使用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e

时间:2014-06-15 12:17:58      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:webservice   java   jdk   wsgen   wsimport   

本文旨在描述如何使用jdk自带的wsgen.exe 和wsimport.exe开发WebService。

1.新建一个java工程,项目名:WebServiceDemo。由于本文想通过完全手动建立的方式来演示整个过程,故我们的工程目录就是WebServiceDemo啦!

2.在此目录下新建Business.java 和 BusinessImpl.java两个类,分别如下:

public interface Business {
	public String echo(String message);	
}
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name="Business",serviceName="BusinessService",targetNamespace="http://webservice.chapter1.book/client")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class BusinessImpl implements Business {

	public String echo(String message) {
		if("quit".equalsIgnoreCase(message.toString())){
			System.out.println("Server will be shutdown!");
			System.exit(0);
		}
		System.out.println("Message from client: "+message);
		return "Server response: "+message;
	}

}
3. cmd到命令行模式下,将此二文件编译为class文件,然后运行如下命令生成wsdl文件,注意之前应该在WebServiceDemo目录下新建一个叫wsdl的文件夹。

bubuko.com,布布扣

bubuko.com,布布扣

运行完上面的命令,我们会发现在wsdl目录下生成了BusinessService.wsdl文件,用notepad打开会发下就是一个xml格式的文件。

4.接下来我们创建一个Server.java的类,用来发布Service。代码如下;

import javax.xml.ws.Endpoint;

public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Endpoint.publish("http://localhost:9527/BusinessService", new BusinessImpl());
		System.out.println("Server has been started");
	}

}

编译然后运行,在浏览器中输入URL:http://localhost:9527/BusinessService?wsdl 如果出现一个XML文档,就说明发布成功了。

bubuko.com,布布扣


bubuko.com,布布扣

注意浏览器中显示的就是我们在wsdl目录下生成的BusinessService.wsdl文件内容,这个文件就是我们后面的wsimport.exe命令执行时要用到的。

5.在Server运行的条件下,下面我们通过wsimport来生成客户端执行类。另起一个命令行窗口,执行如下命令:

bubuko.com,布布扣

成功执行后,我们会发现在WebServiceDemo路径下生成了如下的4个文件:

bubuko.com,布布扣

注意目录结构就是我们之前在BusinessImpl.java类中的targetNamespace指定的,也即对应wsdl文件中的路径,只是转换为目录结构时要注意域名倒着写。

targetNamespace="http://webservice.chapter1.book/client"
OK,至此我们完成了用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e的任务。

6.下面就是通过一个客户端Client.java 类来验证webservice的时候了:

import java.io.BufferedReader;
import java.io.InputStreamReader;

import book.chapter1.webservice.client.Business;
import book.chapter1.webservice.client.BusinessService;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		BusinessService businessService=new BusinessService();
		Business business=businessService.getBusinessPort();
		BufferedReader systemIn=new BufferedReader(new InputStreamReader(System.in));
                while(true){
			String command=systemIn.readLine();
			if(command==null || "quit".equalsIgnoreCase(command.trim())){
				System.out.println("Client quit!");
				try{
					business.echo(command);
				}
				catch(Exception e){
					// IGNORE
				}
				System.exit(0);
			}
			System.out.println(business.echo(command));
		}
	}

}
编译运行,发送一个消息后看到Server端收到并响应。

bubuko.com,布布扣


详解使用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e,布布扣,bubuko.com

详解使用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e

标签:webservice   java   jdk   wsgen   wsimport   

原文地址:http://blog.csdn.net/cruise_h/article/details/30756191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!