8


消息传送 API

本章介绍 Sun Java System Content Delivery Server 消息传送 API。消息传送 API 为运营商或应用程序供应商提供了一种机制,通过创建推送适配器将自身的 WAP、SMS 和 MMS 推送实现与 Content Delivery Server 进行集成。消息传送 API 用于创建推送发送器适配器和推送监听器适配器。

下图说明了消息传送 API 的高层体系结构以及使用此 API 的其他组件。

图 8-1 消息传送 API 的体系结构


消息传送 API 的概述。此图以文本形式进行说明。

外部推送系统可以与 Content Delivery Server 进行交互或者从中接收推送消息。

有关类和方法的信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的消息传送 API 的 Javadoc 工具的 HTML 输出。


8.1 PushMsgSender 接口

PushMsgSender 接口声明推送消息发送器实现所需的方法。此接口在 Content Delivery Server 发送推送消息时由 Content Delivery Server 消息传送服务调用。应实现此接口和所有方法。有关其他信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的消息传送 API 的 Javadoc 工具的 HTML 输出。


8.2 PushMsgListener 接口

PushMsgListener 接口声明推送消息监听器实现所需的方法。应实现此接口和所有方法。有关其他信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的消息传送 API 的 Javadoc 工具的 HTML 输出。


8.3 PushMessage 类

PushMessage 是由 Content Delivery Server 生成的所有不同类型的推送消息的基类。用于 MMS 消息的 MMSPushMessage 类将扩展 PushMessage 类。

在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的发送器实现使用。


8.4 SMSMessage 类

SMSMessage 类已过时。以下方法现在是 PushMessage 类的一部分:

要获取并设置内容名称或下载 URL,请使用 PushMessage 类中的 getAttribute 和 setAttribute 方法,并且在 PushConstants 中定义相应的常量。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.5 WapPushMessage 类

WapPushMessage 类已过时。要获取并设置下载 URL,请使用 PushMessage 类中的 getAttribute 和 setAttribute 方法,并且在 PushConstants 中定义相应的常量。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.6 SMTPMessage 类

SMTPMessage 类已过时。要获取并设置主题或消息“发件人”地址,请使用 PushMessage 类中的 getAttribute 和 setAttribute 方法,并且在 PushConstants 中定义相应的常量。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.7 ContentSlide 类

ContentSlide 类用于存储来自 MMS 推送消息的二进制数据。该二进制数据可以具有 MIME 类型并具有与之关联的唯一 ID。在消息构建期间,所有 set 方法由服务器使用。所有 get 方法可以由推送消息的实现使用。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.8 MMSSlide 类

MMSSlide 类是 ContentSlide 对象的包装,用于构建 MMS 推送消息。在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的实现使用。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.9 MMSPushMessage 类

MMSPushMessage 类扩展了 PushMessage 并表示了 MMS 推送消息。在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的实现使用。此类包含“发件人”地址、“收件人”地址、MMSC 相关数据、用户代理以及任何同步多媒体集成语言 (Synchronized Multimedia Integration Language, SMIL) 数据(如果可用)。同时还封装了 MMSSlide 对象。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.10 MMSSender 接口

MMSSender 接口声明用于发送 MMS 消息的方法。如果要支持 MMS 消息,则此接口必须在集成过程中由供应商特定的 MMSC 实现。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。

8.10.1 sendMMS

sendMMS(com.sun.content.server.server.messaging.message.MMSPushMessage message)

sendMMS 方法封装用于发送 MMS 消息的功能。此方法由 Content Delivery Server 消息传送服务在从 Content Delivery Server 接收 MMSPushMessage 时调用。

Content Delivery Server 将 MMSPushMessage 对象发送到 Content Delivery Server 消息传送服务。消息传送服务使用 MsgService.properties 文件中的 mms.senderclass 属性值标识提供 MMSSender.sendMMS 的供应商特定实现的类的全限定名称。sendMMS 方法实现中的代码将 MSSPushMessage 对象转换为 MMS 消息对象的供应商特定版本并将其发送到供应商特定 MMSC 进行处理。下图显示了此过程。

图 8-2 发送 MMS 消息的进程流


发送 MMS 消息的进程流。此图以文本形式进行说明。

要实现 MMSSender.sendMMS 方法的供应商特定版本,须包含以下项:

1. 连接到供应商特定的 MMSC。

2. 实现 MMSSender.sendMMS 方法以执行下列任务:

有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.11 PushResponse 类

PushResponse 类是由外部推送服务生成的所有不同类型的推送响应的基类。所有 set 方法由推送消息的发送器实现使用。所有 get 方法可以由 Content Delivery Server 使用以便将推送消息记录到数据库中。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.12 PushConstants 类

PushConstants 类包含所有推送服务支持的常量。特定推送服务实现将这些常量与从 PushMessage 对象接收的值进行比较。有关所定义常量的信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的 Javadoc 工具的输出。


8.13 使用消息传送 API

推送发送器适配器必须实现 PushMsgSender 接口。部署期间,实现类需要在 Content Delivery Server 中注册。XML 文件用于注册。此 XML 文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中,且名为 pushsenderfactory.xml。

以下示例显示了此文件的结构。


编码样例 8-1 样例 pushsenderfactory.xml 文件
<pushmsgsenderset>
  <pushmsgsender0 class =
"com.sun.content.server.messagingservice.msgserver.push.TestSMSPushMsgSenderImpl"
    protocol="sms"/>
  <pushmsgsender1 class = 
"com.sun.content.server.messagingservice.msgserver.push.WAPPushMsgSender" 
    protocol="wap"/>
  <pushmsgsender2 class = 
"com.sun.content.server.messagingservice.msgserver.push.SMTPPushMsgSender" 
    protocol="smtp"/>
  <pushmsgsender3 class = 
"com.sun.content.server.messagingservice.msgserver.push.MMSPushMsgSender" 
  protocol="mms"/>
</pushmsgsenderset>

 

此文件中注册了四个适配器。请指定适配器支持的全限定类名和协议。例如,如果适配器用于 SMS 推送,则协议为 sms。确保在类路径中设置了适配器类和相关的类。

如果使用的是 MMS 推送发送器适配器的默认实现 MMSPushMsgSender,则必须实现 MMSSender 接口。请将 MsgServices.properties 文件中的 mms.senderclass 属性设置为类的全限定名称。该类位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

推送监听器适配器实现了 PushMsgListener 接口。实现类需要在 Content Delivery Server 中注册。XML 文件用于注册。此 XML 文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中,且名为 pushlistenerfactory.xml。

以下示例显示了此文件的结构。


编码样例 8-2 样例 pushlistenerfactory.xml 文件
<pushmsglistenerset>
    <pushmsglistener0 class=
"com.sun.content.server.messagingservice.msgserver.protocol.cimd2.CIMD2PushMsgListener"
 protocol="sms"/>
</pushmsglistenerset>