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 类中的 getAttributesetAttribute 方法,并且在 PushConstants 中定义相应的常量。有关详细信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中这些类的 Javadoc 工具的输出。


8.5 WapPushMessage

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


8.6 SMTPMessage

SMTPMessage 类已过时。要获取并设置主题或消息“发件人”地址,请使用 PushMessage 类中的 getAttributesetAttribute 方法,并且在 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>