跟我学WEBSERVICE(二)
用 AXIS 开发 WEBSERVICE 的两种部署方式的简单介绍
WEBSERVICE 有两种部署方式: SOAP Endpoint 和 JWS Endpoint 。
JWS endpoint 的部署方式是一中最简单的部署方式 :
1. 写一个服务端程序:
/**
* 该服务是输入你的名字和性别,然后返回信息。
*/
public class HelloServicesForJws {
/**
*
* @param name your name
* @param sex if you are a man then the sex==true;otherwise sex==false
* @return
*/
public String echoString(String name,boolean sex) {
if(sex) {
return "Hello Mr "+name+"! Welcome to WebService Word!";
} else {
return "Hello Mrs "+name+"! Welcome to WebService Word!";
}
}
}
2. 在 TOMCAT 上以 JWS 的形式部署该服务:将这个文件( HelloServicesForJws.java )拷贝到 webapps/ axis/ 目录下,并把这个文件的名字改为 HelloServicesForJws.jws 。这个文件可以拷贝到 webapps/ axis/ 的任意目录下,但是,不要放在 WEB-INF 子目录下。
3. 启动 TOMCAT ,测试部署成功与否。访问地址是:
如果 HelloServicesForJws.jws 直接放在 webapps/ axis/ 目录下用 http://localhost:8080/axis/HelloServicesForJws.jws
如在其他的目录 (training) 下用: http://localhost:8080/axis/training/HelloServicesForJws.jws
4. 如果测试成功,我们可以在 jwsClasses 目录下可以看到 HelloServicesForJws.class 文件。
5. 注意:当以这种形式部署的时候, JAVA 文件不能放在一个包里面。
SOAP Endpoint 部署方式:
1. 同样我们一上面的程序为列,但是,我门下面的一个包中,文件名也稍微改一下。如下所示:
package com.unimas.datacollection.webservices.training;
public class HelloServicewsForSoap {
/**
* @param name your name
* @param sex if you are a man then the sex==true;otherwise sex==false
* @return
*/
public String echoString(String name,boolean sex) {
if(sex) {
return "Hello Mr "+name+"! Welcome to WebService Word!";
} else {
return "Hello Mrs "+name+"! Welcome to WebService Word!";
}
}
}
2. 然后将这个文件打成一个包: training.jar
3. 将这个包拷贝到 WEB-INF/lib 目录下。
4. 修改文件 Server-config.wsdd 。在文件中添加下列内容:
<service name="HelloServices" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.unimas.datacollection.webservices.training.HelloServicewsForSoap"/>
</service>
我们也可以不用手工来修改 Server-config.wsdd 。我们可以使用 AdminClient 工具在 Server-config.wsdd 文件中轻松的部署上我们需要的服务,或是停止某一个服务。步骤如下:
1. 新建文件: deploy_helloService.wsdd ,和 undeploy_helloService.wsdd 。文件内容如下:
Deploy-helloservices.wsdd 内容:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloServices" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.unimas.datacollection.webservices.training.HelloServicewsForSoap"/>
</service>
</deployment>
undeploy-helloservices.wsdd 内容:
<undeployment name="test" xmlns="http://xml.apache.org/axis/wsdd/">
<service name="HelloServices"/>
</undeployment>
2. 运行 AdminClient.main(new String[]{deployFile}); 可以部署或是停止服务。
5. 启动 TOMCAT 。
6. 用 IE 访问测试: http://localhost:8080/axis/services/ HelloServices
以下列地址访问 WSDL 文件: http://localhost:8080/axis/services/ HelloServices ? wsdl
Service Styles
AXIS 有四种 service styles ,分别是: RPC, Document, Wrapped, and Message 。最常用的就是 RPC 和 Message 。
RPC : 在 AXIS 中是一个默认选项。当你部署的时候使用下列两种方式: <service ... provider="java:RPC"> 或则 <service ... style="RPC">,它遵循SOAP RPC和编码规则,就是说它的WSDL文件形式就想上面所说的 HelloServicewsForSoap 的 echoString 一样。每个 RPC 都包括一个表示名称的外部接点和一些表示参数的内部接点。 AXIS 会根据规则将一个 XML ( WSDL 文件)文件转化成一个 JAVA 对象,并对对想赋上在文件中描述的值。也可以根据规则将一个 JAVA 对象转化成 XML 文件。
Document
以下列方式部署: <service ... style="document"><service ... style="document"> 。适合于老的XML schema。
Wrapped
以下列方式部署: <service ... style="wrapped"><service ... style="wrapped"> 和DOCUMENT一样,适合于老的XML schema。
在大多书情况下,你不许要担心是DOCUMENT服务还是WRAPPED服务。
Message
以下列方式部署: <service name="MessageService" style="message"> 。以这种方式部署的话,会是AXIS失去意义,它使你的代码真正的用XML形式,而不需要转化成JAVA对象。以这种方式部署的有以下四种服务方法:
public Element [] method(Element [] bodies);
public SOAPBodyElement [] method (SOAPBodyElement [] bodies);
public Document method(Document body);
public void method(SOAPEnvelope req, SOAPEnvelope resp);