给WebService 添加SSL支持
1.Environment
Eclipse 3.7
Tomcat 6.0
Axis2 war(1.5.×)
2.Tomcat 设置Axis2
http://chenhailong.iteye.com/admin/blogs/905865
3.tomcat设置SSL
在tomcat目录找到conf目录下service.xml
添加下面:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />
4.在axis2 目录下找到web.xml
添加下面:
<servlet> <servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
5.在axis2目录下conf目录找到axis2.xml
添加下面:
<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8080</parameter>
</transportReceiver>
<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8443</parameter>
</transportReceiver>
注意:8080 是默认的,8443也是默认的
相应的Port为service.xml下配置所定
6.通过java生成keystore for the tomcat
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
默认密码:changeit
7.访问web服务
https://localhost:8443/axis2/services/×××××?wsdl
8.用Client端访问web服务
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient {
public static void main(String [] args) {
try {
String endpoint = "https://localhost:8443/axis/services/××××?wsdl";
System.setProperty("javax.net.ssl.trustStore",
"store目录");
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("echoString"));
String ret = (String) call.invoke( new Object[] { "Hello!" } );
System.out.println("Sent 'Hello!', got '" + ret + "'");
} catch (Exception e) {
System.err.println(e.toString());
}
}
}