JAVA项目中发布WebService服务—简单实例

1,在Java项目中发布一个WebService服务:

如何发布?
JDK1.6中JAX-WS规范定义了如何发布一个WebService服务:
(1)用jdk1.6.0_21以后的版本发布;
(2)与Web服务相关的类,都位于Javax.jws.*包中:

  • @WebService——此注解用在类上指定将此类发布成一个WebService;
  • EndPoint——此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布。

2,例子:

(1)发布WebService服务
这里写图片描述
HelloWebService.java:

package cn.tgb.ws;  
importjavax.jws.WebMethod;  
importjavax.jws.WebService;  
importjavax.xml.ws.Endpoint;  
/** 
 *  @WebService - 它是一个注解,用在类上指定将此类发布成一个ws. 
    Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。 
  
 * @author xuemin 
 * 
 */  
@WebService  
public classHelloWebService {  
   
publicString HelloWord(String name){  
return"Hello: "+name;  
}  
   
/** 
 *添加exclude=true后,HelloWord2()方法不会被发布 
 * @param name 
 * @return 
 */  
@WebMethod(exclude=true)  
publicString HelloWord2(String name){  
return"Hello: "+name;  
}  
publicstatic void main(String[] args) {  
/** 
 *参数1:服务的发布地址 
 *参数2:服务的实现者 
 */  
Endpoint.publish("http://192.168.24.138:456/helloWord",new HelloWebService());  
   
}  

注:

  • @WebService- 它是一个注解,用在类上指定将此类发布成一个ws.
  • Endpoint –此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。

运行以上程序进行发布。

(2)查看wsdl

地址:http://192.168.24.138:456/helloWord?wsdl
只要在客户端浏览器能看到此WSDL文档,说明服务发布成功
这里写图片描述
以上服务发布成功;
总结:
如何发布一个Web服务:

  • a,在类上添加@WebService注解 (注:此注解是jdk1.6提供的,位于javax.jws.WebService包中)
  • b,通过EndPoint(端点服务)发布一个WebService
    (注:EndPoint是jdk提供的一个专门用于发布服务的类,该类的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。位于javax.xml.ws.Endpoint包中)
  • c,注: 类上添加注解@WebService,类中所有非静态方法都会被发布; 静态方法和final方法不能被发布;方法上加@WebMentod(exclude=true)后,此方法不被发布

(3)客户端访问发布的服务

根据WSDL文档来在客户端编写代码,访问发布的服务;但是,WSDL文档看不懂怎么办?代码该如何编写?
——你看不懂,JDK看得懂,wsimport是JDK自带的,可以根据WSDL文档生成客户端调用代码的工具。无论服务器端WebService使用什么语言编写的,都将在客户端生成Java代码。所以服务器用什么语言编写的并不重要。

wsimport.exe命令参数熟知:
-d:生成class文件。默认参数。
-s:生成Java文件 -p:自定义包结构

解析地址生成源码到E盘:
这里写图片描述

执行以上命令后,即可在E盘下生成如下包及类:
这里写图片描述
注:还可以自定义包结构:
自定义包结构的命令:
这里写图片描述
这里写图片描述
将生成的包及.java文件复制到客户端:如下图
这里写图片描述

创建访问服务的类:MyClient.java:
这里写图片描述

MyClient.java:

package cn.tgb.ws;  
   
public classMyClient {  
   
  publicstatic void main(String[] args) {  
     HelloWebServiceServicehwss = new HelloWebServiceService();  
   
     HelloWebServicehws = hwss.getHelloWebServicePort();  
   
     Stringresult=hws.helloWord("hanxuemin");  
     System.out.println(result);  
  }  

(4)运行结果:
这里写图片描述

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值