博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
传统webService服务端和客户端开发(第一种方法)
阅读量:2396 次
发布时间:2019-05-10

本文共 3055 字,大约阅读时间需要 10 分钟。

服务端:(作为服务端,怎么将自己的应用程序发布成一个webservice,让别人调用)

发布服务:

    //java jdk 提供一个自带的类可以将java 应用程序发布成webservice
    /**
     * 1,提供服务对外的访问地址
     * 2,提供服务的类的对象...
     */
    Endpoint.publish("http://192.168.9.100:9999/helloService", new HelloService());
注意:1,endpoint是java jdk 提供的类,用来发布webservice,所以你的jdk 版本必须在1.6.0_21之上..
      2,被发布的类当中必须包含一个有效(方法必须为publish的非静态的,非final的方法)的方法
      3,被发布的类上面必须有注解...

浏览器上敲入http://192.168.9.100:9999/helloService?wsdl 就可以获取使用说明书

发布HelloService作为服务,能通过注解对很多属性名称进行修改

package cn.itcast.server;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import cn.itcast.bean.User;//1 要作为webService  一定要注解  @WebService即可,不用参数//wsimport生成的代码包名是命名空间targetNamespace的值倒过来写@WebService(		targetNamespace="www.baidu.com",			serviceName="HelloServicePortType",		portName="ServicePortType")public class HelloService {		@WebMethod(exclude=true)	//2 要有一个有效的方法,也就是类不能为空的	public void doubleKill(){				System.out.println("itcast");	}	//注解不仅可以再方法和类上,还可以再属性还有返回值上	public	//更改返回值的别名	@WebResult(name="date")	String getDate(			//更改参数的别名			@WebParam(name="date")			String date){								DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");				return dateFormat.format(new Date());	}		//更改方法对外公布的名称	@WebMethod(operationName="getUserByName")//	@WebMethod(exclude=true) 	//默认getUserById方法是公开的,如果不想公开,可以使用上面的注解 exclude是不公开的意思	//webservice调用可以有返回值,和普通方法一样	//图片和视频也是可以传递的,用流的方式	public User getUserById(int id){		User user=new User();		user.setId(id);		user.setMomo("18078900982");		user.setUsername("老冯");		user.setWeibo("laofeng@sina.com.cn");		user.setWeixin("l89999");		return user;	}}

package cn.itcast.server;import javax.xml.ws.Endpoint;public class PublishServer {	/**	 * @param args	 */	public static void main(String[] args) {		//java jdk 提供一个自带的类可以将java 应用程序发布成webservice 		/**		 * 1,提供服务对外的访问地址		 * 2,提供服务的类的对象...		 */		//讲师的ip和随意一个端口		//外部通过这个地址可以通过web方式远程调用api		Endpoint.publish("http://192.168.109.62:9999/helloService", new HelloService());	}}

2.webservice 的客户端调用  加载本地jdk

使用wsimport命令要配置环境变量,就和安装jdk一样。。jdk配好了应该里面的命令就是全部配好的了
使用wsimport前先在cmd进入一个目录,然后执行这个命令之后class文件就在进入的目录结构哪里。

客户端:

(作为客户端,怎么调用别人发布的webservice)

调用服务:我们可以通过java jdk 自带的一个命令 wsimport 根据服务端说明书(wsdl)生成本地的java 代码

我们直接操作这些java 代码,就可以调用webservice
            wsimport -d . http://192.168.9.100:9999/helloService?wsdl
            wsimport -d . +服务说明书(wsdl)的地址 生成本地的class 文件
            wsimport -s . +服务说明书(wsdl)的地址 生成本地的class 文件与java文件
            wsimport -s . -p(包名)+服务说明书(wsdl)的地址 生成本地的class 文件与java文件,重新指定包

package cn.itcast.client.webService;import cn.itcast.server.HelloService;import cn.itcast.server.HelloServiceService;/** * 我们可以直接操作生成的java代码 * 就可以调用webService服务 * @author Administrator * */public class InvokeHelloService {	public static void main(String[] args){		//第一步   找到接口,与获取接口的实现类		HelloServiceService helloServiceService = new HelloServiceService();		HelloService helloService = helloServiceService.getHelloServicePort();		//直接调用方法		helloService.doubleKill();	}}

转载于:https://my.oschina.net/u/2356176/blog/464457

你可能感兴趣的文章
poj 3070 Fibonacci
查看>>
poj 1656 Counting Black
查看>>
BestCoder Round #28
查看>>
poj3299 Humidex
查看>>
poj2159 Ancient Cipher
查看>>
poj1083 Moving Tables
查看>>
poj2255 Tree Recovery
查看>>
zoj 1745 Are We There Yet?
查看>>
UVA100 The 3n + 1 problem
查看>>
hdu1754 I Hate It
查看>>
hdu 1166 敌兵布阵(求区间的和,单节点更新)
查看>>
hiho一下 第四十四周 题目1 : 博弈游戏·Nim游戏
查看>>
poj2299 Ultra-QuickSort(线段树计数问题)
查看>>
hdu4565 So Easy!(矩阵快速幂)
查看>>
poj2528 Mayor's posters(线段树,离散化)
查看>>
线段树多lazy-tag(两个)
查看>>
hdu4578(三个更新操作,三个求值操作)
查看>>
并查集(初级)小结
查看>>
Treap
查看>>
编译原理 词法分析
查看>>