java web service 实现

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,然后选择发布


选择要发布的方法


点击start server


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


之后在项目中找到wsdl文件



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


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


建立client端

一、使用eclipse自带

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

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

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


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


我们新建一个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. }  

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

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("静态使用"));

}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值