Web服务规范SOAP之构建SOAP服务
2007-11-12 11:11:18 来源:论坛整理 作者: 点击:
如果您觉得构建 Web 服务客户机的过程相当简单,事实的确如此。而就很多方面而言,构建服务的过程也同样简单。
如果您觉得构建 Web 服务客户机的过程相当简单,事实的确如此。而就很多方面而言,构建服务的过程也同样简单。
总体过程
创建 Axis2 Web 服务的整个过程涉及以下步骤:
- 创建服务清单
- 创建类
- 将其打包为 Axis 存档文件
- 将 Axis 存档文件上载到 Axis2 Web 应用程序
- 重新启动服务器(如果有必要)
这就是全部步骤。让我们首先从服务清单开始。
创建清单
服务清单告知 Axis2 应用程序(就更大的范围而言,应用服务器)哪个请求与哪个类对应。例如,可以如清单1 中所示的那样指定两个服务函数。
清单1. 在清单中指定两个服务函数
<service name="CMSService">
<description>
This is a sample Web Service for the newspaper's
Content Managment System.
</description>
<parameter name="ServiceClass" locked="false"
>CMSService</parameter>
<operation name="getNumberOfArticles">
<messageReceiver class=
"org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
<operation name="addArticle">
<messageReceiver class=
"org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
</operation>
</service>
首先,定义服务,提供其名称和描述,并指定实际为请求服务的类。接下来,定义实际的操作。请注意,此示例指定了两种不同类型的 messageReceiver。第一个 RawXMLINOutMessageReceiver 用于传统的请求/响应服务。第二个 RawXMLINOnlyMessageReceiver 用于单向消息。操作的名称与有效负载的根元素以及要执行的方法对应。
将此文件保存为 services.xml。
接下来,让我们创建实际的应用程序。
创建应用程序
让我们首先创建模拟前面看到的 echo 函数的类(将直接返回原始有效负载的副本),如清单2 中所示。
清单2. CMSService 类
import org.apache.axis2.om.OMElement;
import javax.xml.stream.XMLStreamException;
public class CMSService {
public OMElement getNumberOfArticles(OMElement element)
throws XMLStreamException {
element.build();
element.detach();
return element;
}
}
要编译此应用程序,请确保 /lib 中的所有 *.jar 文件都在您的 CLASSPATH 上。
此应用程序相当简单,仅包含一个与 getNumbereOfArticles 操作对应的类。此函数和任何要作为操作的函数一样,接收单个 OMElement 参数(表示有效负载)。此处,您将首先使用 build() 方法来确定已接收到所有数据——AXIOM 使用一个 pull 方法访问数据——然后将元素从其当前树中分离,以便能够将其返回。
如果喜欢冒险,可以自由地部署服务和访问服务,以访问服务并查看结果。应