微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

架构师之webservice-----------最快发布和调用webservice(分客户端和服务端)

1.前言.
  以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样.
2.直接代码.
服务器:
package com.whaty.platform.ws.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import com.whaty.platform.ws.server.IMyservice;

/**
 * @className:MyClient.java
 * @Desc:访问发布的服务
 * @author:lizhuang
 * @createTime:2012-12-21 上午01:23:57
 */
public class MyClient {
	public static void main(String[] args) {

		try {
			//服务WSDL Document的地址
			URL url = new URL("http://localhost:7777/tudou?wsdl");
			//Qnameqname是qualified name 的简写
			//2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成
			//由发布的wsdl可知namespace为http://server.ws.platform.whaty.com/,
			QName qname=new QName("http://server.ws.platform.whaty.com/","MyServiceImplService");
			Service service=Service.create(url,qname);
			IMyservice ms=service.getPort(IMyservice.class);
			ms.add(1,4);
			ms.minus(1,4);
		} catch (MalformedURLException e) {
			e.printstacktrace();
		}
	}
}

package com.whaty.platform.ws.server;

import javax.jws.WebService;

/**
 * @className:IMyservice.java
 * @Desc:定义:SEI service endpoint interface
 * @author:lizhuang
 * @createTime:2012-12-21 上午12:57:18
 */
//JAX-WS注解,表示java api xml for webservice。JDK自带API的XML格式的webservice
@WebService
public interface IMyservice {
	
	int add(int a,int b);

	int minus(int a,int b);
}




package com.whaty.platform.ws.server;

import javax.xml.ws.Endpoint;

/**
 * @className:MyServer.java
 * @Desc:发布服务
 * @author:lizhuang
 * @createTime:2012-12-21 上午01:02:39
 */
public class MyServer {
	public static void main(String[] args) {
		//访问方式:http://localhost:7777/tudou?wsdl
		String address="http://localhost:7777/tudou";
		Endpoint.publish(address,new MyServiceImpl());
	}
}


package com.whaty.platform.ws.server;  //endpointInterface指定接入点接口:接口必须存在
import javax.jws.WebService;  
@WebService(endpointInterface="com.whaty.platform.ws.server.IMyservice")
public class MyServiceImpl implements IMyservice {

	public int add(int a,int b) {
		System.out.println("a+b="+(a+b));
		return a+b;
	}

	public int minus(int a,int b) {
		System.out.println("a-b="+(a-b));
		return a-b;
	}

}


客户端(需要自动生成客户端文件,这个看3所述.
package Test;
import com.whaty.platform.ws.server.IMyservice;
import com.whaty.platform.ws.server.MyServiceImplService;

public class MyClient2 {  
    public static void main(String[] args) {  
        MyServiceImplService myServiceImplService=new MyServiceImplService();  
        IMyservice msis= myServiceImplService.getMyServiceImplPort();  
        msis.add(1,4);  
        msis.minus(1,4);  
    }  
}  


3.如何调用?
(1)WebserviceZhujie工程直接ctrl+f12运行MyServer的main方法,则发布server.

(2) http://localhost:7777/tudou?wsdl则可以验证是否发布成功.
(3)调用java自带的webservice客户端生成工具.
  cmd进入电脑的dos输入框
   
    cd %JAVA_HOME%
     

   
    cd bin
     

   
    wsimport -d d: -keep -verbose http://localhost:7777/tudou?wsdl
     

这样就在d盘生成了com为主目录的文件.
(3)把d盘com下文件copy到eclipse的src里面,并执行MyClient2的main方法,ok!
4.运行中执行了一个加法程序,显示结果为:
a+b=5
a-b=-3

本文主要参考csdn的大牛yaerfeng的原创,再次对原创致敬! 参考连接: http://blog.csdn.net/yaerfeng/article/details/8352307

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐