`

webservice的实现

阅读更多

 

webservice的实现

WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在Java领域,WebService的一个成熟实现是Axis

q AxisApache的一个开源WebService引擎,它是目前最为成熟的开源WebService引擎之一。

q Apache Axis是符合W3CSOAP协议的实现。

q 该项目是属于Apache SOAP协议的子项目。

1.1 Axis的下载

登陆http://www.apache.org/dyn/closer.cgi/ws/axis/1_4站点,Axis的最新版本是1.4,本文中示例程序都是基于该版本完成。下载到axis-bin-1_4.zip文件,解压缩该文件,发现如下的文件结构:

q docs:存放Axis的说明文档。

q lib:存放Axis的二进制发布包。

q samples:存放利用Axis发布WebService的示例代码。

q webapps:存放安装Axis的基础应用。

q xmls:存放相关配置文档。

q 还有LICENSE等相关说明文档。

1.2 Axis的安装

安装Axis,首先必须保证系统已经正确安装了Web服务器,笔者使用Tomcat6.0.24webapps下的axis路径全部复制到Tomcatwebapps路径下。然后打开浏览器,输入:http://localhost:8080/axis/

如果出现如图1所示界面表示Axis的基本类库已经安装成功,地址中的8080是我的Tomcat的端口。单击如图1所示页面的左上方“Validation”链接,出现如图2所示界面:



  图1 Axis安装成功界面 

 



    图2 Axis校验界面(已安装组件

 

 

如若页面显示Axis的必需组件缺少一个没有安装,两个可选组件也没有安装,单击上面的提示链接,分别登陆:

q http://java.sun.com/products/javabeans/glasgow/jaf.html

q http://java.sun.com/products/javamail/

q http://xml.apache.org/security/

依次下载如下三个压缩文件:

q jaf-1_1-fr.zip

q javamail-1_4.zip

q xml-security-bin-1_2_1.zip

将这三个压缩文件解压缩。将jaf-1_1-fr.zip压缩包中的activation.jar文件,复制到axis应用的WEB-INF\lib下;将javamail-1_4.zip压缩包中的mail.jar文件,复制到axis应用的WEB-INF/lib下;再将xml-security-bin-1_2_1.ziplibxmlsec-1.2.1.jarxalan.jar文件,复制到WEB-INF/lib下。再次校验Axis,看到页面提示全部安装成功。

1.3 开发自己的WebService

完成了前面的部署后,就可以开始开发自己的WebService了。首先编写需要提供服务的类,该类不需要实现任何接口,也不需要继承任何父类,只需要是POJO即可。Axis支持将普通方法暴露成WebService。看如下的服务类:

//服务类,应该声明为public

public class Hello

{         //服务方法

    public String sayHello(String name)

    {

        return "hello ," + name + ",Welcome to Axis";

    }

}

该类简单得难以置信,但正是个简单的类,它可以提供WebService。将该类的文件名存为Hello.jws

注意:不是java后缀,而是jws后缀。

将该文件放入axis应用的根路径下,也就是与WEB-INF同一级路径,然后重启动Tomcat,或者在Tomcat控制台重新加载axis应用。然后,打开浏览器输入如下地址:

http://localhost:8080/axis/Hello.jws

看到如图所示界面:


    图3  Hello WebService

 



 图4 WebService的WSDL描述

这表示该WebService发布成功,单击“Click to see the WSDL”链接,可查看该WebServiceWSDL描述。成功发布的WebSerivice通过网络访问,因为SOAP协议基于HTTP协议,因此WebService可以在互联网上访问。访问该WebService的客户端代码如下:

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

public class WebServiceClient {

// 程序的入口

public static void main(String args[])

{

System.out.println("开始调用WebService");

try

{

// WebService所在的url

String endpoint = "http://localhost:8080/axis/Hello.jws";

 

// 创建Serivce对象,Service对用用于创建Call对象

Service service = new Service();

 

// 创建Call对象,Call对象用于调用服务

Call call = (Call) service.createCall();

 

// 为Call对象设置WebService的url

call.setTargetEndpointAddress(new java.net.URL(endpoint));

 

// 为Call对象设置调用的方法名

call.setOperationName("sayHello");

 

// 调用WebService的方法,并获得返回值

String s = (String) call.invoke(new Object[] { "hsaingyu" });

 

// 输出返回值

System.out.println(s);

}

catch (Exception e)

{

System.out.println(e.toString());

}

System.out.println("调用WebService正常结束");

}

}

运行结果:


   借助于Axis可以将POJO发布成WebService,远程客户端不需要任何接口或类,因为远程客户端直接调用方法,直接使用Call对象调用方法。

 

  • 描述: Axis安装成功界面
  • 大小: 97.7 KB
  • 描述: Axis校验界面
  • 大小: 107.4 KB
  • 描述: Hello WebService
  • 大小: 70.1 KB
  • 描述: WebService的WSDL描述
  • 大小: 152.7 KB
  • 大小: 100.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics