一.前期准备。
1. 如何编写Axis2 Webservice服务这里就不说了,有需要的可以参考本人百度文库的另一篇文档:https://www.sodocs.net/doc/9b18549139.html,/view/aafc47e5580216fc710afd58.html
2. 下载axis2-1.7.1-war.zip(其他版本亦可),解压得到axis2.war,放到Tomcat的webapps 目录下,启动tomcat,会自动生成axis2文件夹。
3. 把写好代码的axis2程序包(本例是AxisServer.aar)放到axis2的services目录下,启动Tomcat(即启动Axis2服务)
二.生成https访问的SSL安全证书等文件
1.随便在一个文件夹下,新建一个server和一个client的空文件夹。并新建一个keytools.bat 的批处理,编辑批处理的内容如下(红色方块部分需按自己的实际情况填写):
set SERVER_DN="CN=127.0.0.1, OU=SPH, O=SPH, L=sh, S=sh, C=CN"
set CLIENT_DN="CN=Client, OU=SPH, O=SPH, L=sh, S=sh, C=CN"
set PASS_SET= 123456
keytool -genkey -v -alias server -keyalg RSA -keystore C:/ZipOut/server/server.keystore -dname %SERVER_DN% -validity 3650 -storepass %PASS_SET% -keypass %PASS_SET%
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore C:/ZipOut/client/client.p12 -dname %CLIENT_DN% -validity 3650 -storepass client -keypass client
keytool -export -alias client -keystore C:/ZipOut/client/client.p12 -storetype PKCS12 -storepass client -rfc -file C:/ZipOut/client/client.cer
keytool -import -alias client -v -file C:/ZipOut/client/client.cer -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET%
keytool -export -alias server -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET% -rfc -file C:/ZipOut/server/server.cer
keytool -import -file C:/ZipOut/server/server.cer -storepass %PASS_SET% -keystore C:/ZipOut/client/client.truststore -alias server -noprompt
pause
2.双击批处理文件,即会在server和client目录下生成需要的证书等文件。
三.配置Tomcat和Axis2使用https访问
1.进入tomcat的conf目录,修改server.xml文件,添加8443端口使用https访问,如下代码:
maxThreads="150" scheme="https" secure="true" clientAuth="true " sslProtocol="TLS" keystoreFile="C:/ZipOut/server/server.keystore" keystorePass="123456" truststoreFile="C:/ZipOut/server/server.keystore" truststorePass="123456" /> 2.进入axis2的conf目录,修改axis2.xml文件,添加两段代码: class="https://www.sodocs.net/doc/9b18549139.html,monsHTTPTransportSender"> 3.重启Tomcat,访问:https://localhost:8443/axis2/services/listServices,以下界面即成功。 四.生成Webservice客户端 1.进入axis2-1.7.1-bin.zip的解压目录(注意不是axis2-1.7.1-war.zip),进入bin目录,启动Windows命令行,进入bin目录下,运行一下命令:wsdl2java.bat -uri http://localhost:8080/axis2/services/AxisServer?wsdl -p com.axis.client -s -o stub。注意uri是http 和8080端口的,不是https和8443的,因为我们的证书是自己生成的,是不被权威机构认证的证书,所以不能用https,否则会报异常。命令执行完后,会生成stub文件夹,在文件夹最底层会有AxisServerStub.java 五.使用java编写客户端访问webservice 1.把生成的AxisServerStub.java文件复制到java项目中,建立包名应该跟生成客户端文件时输入的一致,否则文件会报错,需要自己手动改正(本例是com.axis.client)。把AxisServerStub.java文件复制到java项目后,手动替换webservice访问方式。 2.替换为https访问之后,在屏蔽了可信任的安全证书访问时,会提示无有效的安全证书的异常,如下: 3.添加了可信任的安全证书访问时,即可正常访问。信任证书可以是绝对路径下的也可以是项目路径下的。 六.使用C# (VS2010)编写客户端访问webservice 1. 新建Windows窗体应用程序的项目,添加服务引用,按以下步骤操作,即可添加服务。 2. 新建Util的静态类,内容如下: public class Util { /// /// Sets the cert policy. /// public static void SetCertificatePolicy() { ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; } /// /// Remotes the certificate validate. /// private static bool RemoteCertificateValidate( object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { // trust any certificate!!! System.Console.WriteLine("Warning, trust any certificate"); return true; } } 3. 编写窗体代码,代码如下(如果把Util.SetCertificatePolicy()屏蔽,也会报安全证书异常,自己可以试一下效果):