用
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);