Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

Web Service的关键技术和规则:

1.XML:描述数据的标准方法.

2.SOAP:表示信息交换的协议(简单对象访问协议). 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。简单地说:SOAP 是用于访问网络服务的协议。

3.WSDL:Web服务描述语言.是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问

4.UDDI:通用描述、发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描述商务的协议。


发布服务实现的几种方式

一、利用JDK web服务api实现,这里使用基于SOAP message的Web Service:

创建一个web项目,并新建一个class类,发布使用:

HelloService.java

package com.web.service;


import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;


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




@WebService  
public class HelloService {

// 供客户端调用方法  该方法是非静态的,会被发布
public String say(String name) {
return "hello"+name;
}


    public String say2(String name){
        return "你好! "+name;
    }
    

//     方法上加@WebMentod(exclude=true)后,此方法不被发布;


    @WebMethod(exclude=true)  
    public String getHello(String name){
        return "你好! "+name;
    }
    
//    静态方法不会被发布
    public static String staMethod(String name) {
    return "静态方法"+name;
    }

public static void main(String[] args) {
//发布时提供地址及 服务的类
Endpoint.publish("http://localhost:8080/Service/ServiceHello", new HelloService());
System.out.println("成功发布");

//发布成功后 在浏览器输入 http://localhost:8080/Service/ServiceHello?wsdl 就可以访问
}
}

编译运行即开启服务,访问地址http://localhost:8080/Service/ServiceHello?wsdl就能看到相应的wsdl(xml格式)即发布成功


二、使用eclipse自带web service 服务发布 axis

创建一个web项目级一个要发布的类

右击这个项目,new -> other->web services->webservice

选择需要暴露的实现,service.HelloService,然后选择发布

java web service 实现

选择要发布的方法

java web service 实现

点击start server

java web service 实现

我们是通过tomcat发布的,直接start即可。常用的框架有,cxf、 axis、 axis2等,这里选择了axis


之后在项目中找到wsdl文件

java web service 实现


文件最后部分找到访问地址

java web service 实现

在该地址后面加?wsdl   即http://localhost:8080/web_service/services/HelloService?wsdl就可以访问


建立client端

一、使用eclipse自带

新建一个java工程(都可以)

右键该项目new -> other->web services->web service client

输入wsdl地址即访问地址,finish即可

java web service 实现

然后可以看到目录下的Webservice java类,

java web service 实现

我们新建一个test,去测试以下

[java] view plain copy
  1. package test;  
  2.   
  3. import java.rmi.RemoteException;  
  4.   
  5. import service.HelloService;  
  6. import service.HelloServiceProxy;  
  7.   
  8. public class Test {  
  9.   
  10.     public static void main(String[] args) throws RemoteException {  
  11.         HelloServiceProxy helloPxy = new HelloServiceProxy();  
  12.         HelloService service = helloPxy.getHelloService();  
  13.         String res = service.say("yyf");  
  14.         System.out.println(res);  
  15.     }  
  16.   
  17. }  

java web service 实现

客户端超时断开连接设置:

HelloServiceSoapBindingStub->

protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {  

         _call.setTimeout(1000);//设置超时时间  

.......

}

二、使用命令方式生成java文件

1.创建Web Service Project,命名为TheClient。 

2.在dos命令下输入 wsimport -s “src目录” -p “生成类所在包名” -keep “wsdl发布地址” 

例:

wsimport -s E:\eclipse\webClient\src -p com.web.service -keep http://localhost:8080/web_service/services/HelloService?wsdl 

测试时这样写的 与上一个方式的不一样,client端生成的java文件随使用的方法框架不同而不同,建议使用一个就可以了。

public class Test {
public static void main(String[] args) throws RemoteException {
HelloService service=new HelloServiceService().getHelloService();

System.out.println(service.say("我不哦"));
System.out.println(service.say2("我要哦"));
System.out.println(service.staMethod("静态使用"));

}
}

相关文章: