AXIS发布webservices的两种方式:即时发布、定制发布
【准备工作】
下载axis,获取所需的jar包并导入工程,下载地址:http://mirrors.hust.edu.cn/apache/axis/axis/java/1.4/
1. JWS (Java Web Service) Files - Instant Deployment
web.xml中添加如下配置:
<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class> org.apache.axis.transport.http.AxisServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping>
将编写好的业务类复制到应用的根目录,并将源文件后缀改为jws即可,无需重启容器。
例如:要发布一个获取服务器当前时间的webservice接口,新建SimpleService.java
import java.util.Date;
public class SimpleService {
public String getTime() {
return "hello~ " + new Date();
}
}
编写完成后将SimpleService.java改为SimpleService.jws,并放在应用的根目录,即发布成功,效果如下:
查看WSDL如果提示AXIS error java.lang.RuntimeException: No compiler found in your classpath!(you may need to add 'tools.jar'),需要将tools.jar添加到工程lib目录;
浏览器调用getTime接口,http://localhost:8080/test/SimpleService.jws?method=getTime,效果如下:
注:JWS的Web服务是用于简单的Web服务,在服务类中不能使用包(package),另外因为代码在运行时才被编译,所以你无法了解的错误直到部署之后,如果想提供优质的web服务,应该使用Java类定制部署。
2. Custom Deployment - Introducing WSDD
服务类编写如下:
package gang.chen;
public class MyService {
public void hello(String name)
{
System.out.println("Hello " + name);
}
}
web.xml中添加如下配置:
<servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
在与web.xml同目录下新建server-config.wsdd文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <globalConfiguration> <parameter name="sendMultiRefs" value="true"/> <parameter name="disablePrettyXML" value="true"/> <parameter name="dotNetSoapEncFix" value="true"/> <parameter name="enableNamespacePrefixOptimization" value="false"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="sendXsiTypes" value="true"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> </globalConfiguration> <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/> <service name="MyService" provider="java:RPC"> <parameter name="className" value="csg.MyService"/> <parameter name="scope" value="request"/> <parameter name="allowedMethods" value="*"/> <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </service> <transport name="http"> <requestFlow> <handler type="URLMapper"/> </requestFlow> </transport> </deployment>
启动容器,发布成功效果如下: