本文通过一系列的实验步骤描述,向您展示如何使用 gSOAP 编写的客户端,通过双向证书认证,访问由 tomcat7 和 Axis2 搭建的 web 服务。全文">循序渐进,分为几个阶段逐步展开,每个阶段相关的注意事项和遇到过的一些问题也一并记录下来供读者参考。
先简单介绍一下需要准备的工具。
服务端:由 tomcat7+axis2 搭建而成 客户端:由 gSOAP 工具生成 证书 :用 openssl 和 jdk 自带的 keytool 制作 其它 :如果在 Windows 操作系统下实验,
C++/C++ 代码可能
还会需要一些集成开发环境,如 Visual C++2010 或 CodeBlocks+MinGW 等。Java 代码的编译可能会用到 eclipse。
此外,为叙述方便,后文的用词上也作一些约定:
将 tomcat7 的安装路径记为:<tomcat_home> 将 gSOAP 压缩包的解压路径记为:<gsoap_home> 将 openssl 的安装路径记为:<openssl_home> 将基于 http 的 web 服务网址记为:<service_http> 将基于 https 的 web 服务网址记为:<service_https>
搭建基于 http 的 web 服务
准备好 java 代码
这里编写一个非常简单的 sayHello 功能的 java 代码,传入参数是一个字符串,返回值则是“Hello”加上传入的字符串。稍后用其发布 web 服务已经足够了,如 清单 1 所示:
清单 1. sayHello 源码
public class SimpleService{ public String sayHello(String name){ return "Hello, "+name; } }
使用 eclipse 或者 jdk 自带的 javac 命令行工具进行编译,生成 SimpleService.class 文件。
部署服务
利用 SimpleService.class 文件,快速的发布一个基于 http 的 web 服务,步骤如下:
从 axis2 官方网站下载 WAR (Web Archive) Distribution,
例如:axis2-1.6.2-war.zip 将 axis2-1.6.2-war.zip 文件解压缩,获得 axis2.war 文件; 将 axis2.war 文件放置于 <tomcat_home>\webapps 下; 启动 tomcat7,axis2.war 会自动解压缩生成 axis2 目录; 将 SimpleService.class 放置于 <tomcat_home>\webapps\axis2\WEB-INF\pojo 下。
这样,一个简单的 web 服务发布就完成了。
验证的方式也很简单,打开发布服务电脑上的浏览器,查看网址 http://127.0.0.1:8080/axis2/services/SimpleService?wsdl,如果能够显示 XML 结构的内容,就说明发布成功。
当然,也可以通过局域网内其它电脑访问该服务,如果访问不了,需要查看,IP 地址和端口是否正确,防火墙是否配置得当或关闭等。
后文我们将这个基于 http 的 web 服务网址记为 <service_http>。
值得一提的是,这里我们发布的 web 服务是通过 axis2 提供的热部署 (hotdeployment)功能进行的。打开 <tomcat_home>\webapps\axis2\WEB-INF\conf 下的 axis2.xml 文件,我们可以看到 axis2 默认是打开了热部署开关 hotdeployment 的,如 图 1 所示。
图 1. axis2 热部署开关
此外,pojo 部署目录也可以进行修改,如 图 2 所示:
图 2. axis2 pojo 部署路径