科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Web服务规范SOAP之构建SOAP服务

Web服务规范SOAP之构建SOAP服务

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如果您觉得构建 Web 服务客户机的过程相当简单,事实的确如此。而就很多方面而言,构建服务的过程也同样简单。

作者:佚名 来源:论坛整理 2007年11月17日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
部署服务

  为了部署服务,需要创建一个 Axis 存档文件。此文件和 *.jar 或 *.war 文件类似,实际是使用特殊文件扩展名(在本例中使用的是 .aar)的 zip 文件。请按照以下步骤创建此文件:

  1. /lib 目录中的所有文件添加到 CLASSPATH 并编译 CMSService.java 文件。
  2. 在与 CMSService.class 文件相同的目录中创建名为 META-INF 的新目录。
  3. 从包含 CMSService.class 文件的目录中发出以下命令: jar cvf CMSService.aar ./* 应该看到与以下类似的结果: added manifest adding:CMSService.class(in = 513) (out= 330)(deflated 35%) adding:CMSService.java(in = 328) (out= 182)(deflated 44%) ignoring entry META-INF/ adding:META-INF/services.xml(in = 391) (out= 229)(deflated 41%)
  4. 使用安装示例服务中列出的步骤将此服务添加到服务器上。(如果看到 Web 接口上有 Servlet 错误,请确保登录到了 Axis2 应用程序。如果会话已过期,应用程序将不一定会通知您,而可能会直接显示错误。)
  5. 如果有必要,请重新启动 Geronimo。(将可能不必在添加服务后进行此操作,但在进行更改后可能必须这样做。)

  如果单击 View services 链接,应该看到与图1中所示类似的内容。

  图1. 可用服务

  可用服务

  访问服务

  现在已经完成了服务构建,接下来要通过客户机对其进行访问。对前面创建的 ClassifiedClient.java 文件进行以下更改(请参见清单 6)。

  清单6. 修改 ClassifiedClient

...
public class ClassifiedClient {
    private static EndpointReference targetEPR =
         new EndpointReference(
           "http://localhost:8080/axis2/services/CMSService");

    public static OMElement getEchoOMElement() {
        SOAPFactory fac = OMAbstractFactory.getSOAP12Factory();
        OMNamespace omNs = fac.createOMNamespace(
                "http://daily-moon.com/cms", "cms");
        OMElement method = fac.createOMElement("getNumberOfArticles", omNs);
        OMElement value = fac.createOMElement("category", omNs);
        value.addChild(fac.createText(value, "classifieds"));
        method.addChild(value);

        return method;
    }

    public static void main(String[] args) {
        try {
            OMElement payload = ClassifiedClient.getEchoOMElement();
            Options options = new Options();
            options.setTo(targetEPR);
            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

            ServiceClient sender = new ServiceClient();
            sender.setOptions(options);
            OMElement result = sender.sendReceive(payload);

            String response = result.getText();
            System.out.println("There are "+response+" classifieds at the moment.");

        } catch (Exception e) { //(XMLStreamException e) {
System.out.println(e.toString());
        }
    }
}

  编译并运行了此应用程序后,应看到清单7 中所示的响应。

  清单7. ClassifiedClient 响应

  There are 42 classifieds at the moment.

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章