服务端:(作为服务端,怎么将自己的应用程序发布成一个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(); }}
![](http://static.oschina.net/uploads/space/2015/0609/084300_rbQI_2356176.png)