1.axis服务器包的校验。
到http://ws.apache.org/下载axis后,解压,拷贝axis到tomcat的webapps目录下。启动tomcat,运行http://localhost:8080/axis
点击“validation”,程序会检测少的包,并提示下载路径。我目前包含的包如下:
axis.jar;
axis-ant.jar;
axis-schema.jar;
commons-discovery-0.2.jar;
commons-httpclient-3.0-rc2.jar;
commons-logging-1.0.4.jar;
jaxrpc.jar;
log4j-1.2.8.jar;
saaj.jar;
wsdl4j-1.5.1.jar;
activation.jar;
mail.jar
2.环境变量的配置
其实运行axis是不用配置环境变量的。但有的时候需要利用axis提供的一些工具,产生一些文件,需要应用很多包,利用ClassPath就比较方便了。
AXIS_HOME:
AXIS_LIB:
AXISCLASSPATH:
3.把axis集成 到项目中
a、把上面所提到的包拷贝到项目相应的lib目录中
b、修改web.xml文件,增加所需的servlet配置
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet>
<servlet-name>SOAPMonitorService</servlet-name>
<servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
<init-param>
<param-name>SOAPMonitorPort</param-name>
<param-value>5001</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SOAPMonitorService</servlet-name>
<url-pattern>/SOAPMonitor</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
4.服务发布(jws文件发布和定制发布)
a、jws文件发布
在web应用程序目录下,新建一个jws文件,例如:Hello.jws文件(其实就是个java文件,不包含包名)。
public class Hello {
public String hello(String name){
if(name==null){
name="";
}
return "Hi,你好 "+name+",欢迎来到Web服务世界!";
}
}
这样就可以直接查看hello服务相应的wsdl了:http://localhost:8080/testaxis/hello.jws?wsdl
b.定制发布。
定制发布,依赖一个server-confif.wsdd文件。
在web-inf目录下新建一个deploy.wsdd文件,设置发布的服务,例如:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="city" provider="java:RPC">
<parameter name="className" value="yhp.test.axis.service.CityService"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
利用axis提供的工具,就可以生成server-confif.wsdd文件了:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
在运行过程中发现:如果没有把axis自带的应用发布到服务器上,运行时会提示404的错误,未发现axis/servlet/AxisServlet。
5.客户端调用
String endpoint = "http://localhost:" + "8080"
+ "/testaxis/services/city"; //以定制发布方式,如果是jws文件,则endpoint为相应的jws文件
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("getZip");
String res = (String) call.invoke(new Object[] {""});//object数组为远程方法的参数
System.out.println(res);
6.生成客户端stub相关类
Axis提供了工具生成客户端stub相关的类,即通过wsdl产生stub。
java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/testaxis/services/city?wsdl