[AIX Solaris HP-UX Linux Windows][z/OS]

在 SCA 应用程序中使用 Atom 绑定(已弃用)

可以在服务组件体系结构 (SCA) 应用程序中使用 Atom 绑定,以将数据集合公开为 Atom 订阅源,或引用现有外部 Atom 订阅源。

准备工作

如果您不熟悉 Atom 协议,请参阅有关“Atom 联合格式”(用于描述 Web 订阅源的基于 XML 的文档格式)以及“Atom 发布协议”(用于发布和更新 Web 资源)的文档。

有关此任务

使用 Atom 绑定来处理服务,这些服务可提供或使用如“Atom 聚合格式”和“Atom 发布协议”中所述的条目。 SCA 组件可以引用通过 Atom 协议来定义的现有外部 Web 订阅源,然后在 Java 实现中处理这些订阅源。 另外,可以使用 Atom 绑定来编写新服务,并将它们公开为 Atom 订阅源。

本主题描述以下过程:

过程

  • 使用 Atom 绑定来公开 Atom 订阅源服务。
    1. 在 SCA 组合定义中配置 Atom 订阅源服务。

      在 SCA 组合的组合定义中,指定服务中 Atom 订阅源的统一资源标识 (URI)。 以下组合定义示例通过 Atom 绑定来公开服务:

      <component name="NewsServiceComponent">
        <implementation.java class="com.ibm.test.atom.NewsServiceImpl"/>
        <service name="NewsService">
          <t:binding.atom uri="http://localhost:9080/newsService"/>
        </service>
      </component>
      示例 Atom 绑定 URI http://localhost:9080/newsService 是绝对 URI。 要在产品集群中运行使用 Atom 绑定的应用程序,请指定相对 URI;例如:
      <t:binding.atom uri="/newsService"/>
      
    2. 访问服务。

      例如,要访问 NewsService 服务,请在另一个组件中使用 SCA 引用,或直接从 Web 浏览器访问 URI http://localhost:9080/newsService。 如果从 Web 浏览器访问,那么浏览器会将输出作为 Atom 订阅源进行处理。

      以下示例显示从 NewsService 服务返回的 Atom 订阅源的 XML 标记:

      <?xml version="1.0" encoding="UTF-8"?>
      <feed xmlns="https://www.w3.org/2005/Atom">
        <title type="text">Feed</title>
        <id>Feed1329090360</id>
        <entry>
          <id>Item1</id>
          <title type="text">item</title>
          <content type="application/xml">
            <ns2:root xmlns:ns2="http://tuscany.apache.org/xmlns/sca/databinding/jaxb/1.0"
                xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:type="item">
            <name xmlns="">First Item Name</name>
            <title xmlns="">First Item Title</title>
          </ns2:root>
        </content>
        <link href="Item1"></link>
       </entry>
      </feed>
    3. 执行 HTTP 操作来处理 Atom 订阅源。
      要处理由 Atom 服务公开的项集合,请执行 HTTP 协议的四项基本操作:
      • POST(创建或添加)
      • GET(检索或查询)
      • PUT(更新)
      • DELETE(移除)

      组件的 Java 实现类应该实现 org.apache.tuscany.sca.data.collection.Collection 接口,或实现对 Collection 接口进行扩展的接口。 org.apache.tuscany.sca.data.collection.Collection 接口中定义以下方法:

      public abstract Entry[] getAll()
      返回订阅源中的每个条目
      public abstract Entry[] query(String s)
      根据某些匹配条件在订阅源中查询条目
      public abstract Object post(Object obj, Object obj1)
      将新条目添加到订阅源
      public abstract Object get(Object obj) throws NotFoundException
      返回由提供的键值所标识的单一条目。
      public abstract void put(Object obj, Object obj1) throws NotFoundException
      更新由提供的键值所标识的现有条目
      public abstract void delete(Object obj) throws NotFoundException
      删除由提供的键值所标识的现有条目
  • 使用 Atom 绑定引用来访问使用 Atom 绑定的 SCA 应用程序所公开的服务,或访问外部 Atom 订阅源。
    1. 配置 Atom 绑定引用以访问所公开的服务。

      在 SCA 组合的组合定义中指定用来访问所公开服务的引用。 以下示例是一个用来访问 NewsService 服务的引用定义:

      <reference name="newsServiceRef" target="NewsServiceComponent/NewsService">
          <t:binding.atom/>
      </reference>
    2. 配置 Atom 绑定引用以访问外部 Atom 订阅源。

      在 SCA 组合的组合定义中指定用来访问外部 Atom 订阅源的引用,例如:

      <reference name="atomFeed">
          <tuscany:binding.atom uri="http://feeds.feedburner.com/blogspot/Dcni?format=xml"/>
      </reference>
    3. 在 Java 实现中处理 Atom 绑定引用。

      SCA 组件(包含两个示例引用)的 Java 实现类可能会定义这两个示例引用,如下所示:

      @Reference(required = false)
      public Collection newsServiceRef;
      
      @Reference(required = false)
      public Collection atomFeed;
    4. 在实现中使用 Collection API 来处理订阅源。

      例如,为了将新条目添加到 NewsService 订阅源,实现可能会调用:

      MyEntry entry = new MyEntry("Title", "Content");
      newsServiceRef.post("mykey-10-15", entry);

      为了从外部订阅源检索条目,实现代码可能会使用以下示例代码:

      atomFeed.get("idtag-20090321");

下一步做什么?

在应用程序中部署 SCA 组件。

如果将 Atom 订阅源服务部署到集群,并且目标属性 @target 用于指向该服务,那么目标 URI 解析为单个集群成员的 HTTP 端口。 要在此情况下保持故障转移和负载均衡,可以使用指向代理服务器端点的 binding.atom 元素上的绝对 URI,而不是引用元素上的目标属性。 有关更多信息,请参阅有关使用外部 Web 服务器时解析 SCA 引用的主题和有关使用外部 Web 服务器时将 HTTP 请求路由到 SCA 服务的主题。