9


确认服务 API

通过使用 Sun Java System Content Delivery Server 确认服务 API,Content Delivery Server 可以处理将内容下载到设备后发送的确认消息。只有在下列情况下才需要确认服务适配器:为 Content Delivery Server 定义了能够发送确认消息的设备,或者使用可发送确认消息的服务。

Content Delivery Server 支持以下类型的确认消息:

确认服务 API 包括以下类:

有关这些类的其他信息,请参见位于 $CDS_HOME/javadoc/cdsapi/index.html 的 Javadoc 工具的 HTML 输出。


9.1 一般处理流程

Content Delivery Server 可以将多媒体消息中的内容发送到支持 MMS 标准的设备。当设备收到 MMS 消息内容时,将通过 MMSC 返回确认消息。使用确认服务 API 编写的确认服务适配器用于设置 Content Delivery Server 与 MMSC 间的连接,以及处理来自 MMSC 的确认消息。

如果将系统设置为支持将 UDP 消息直接发送到 Content Delivery Server 的服务或设备,则确认服务适配器会将 Content Delivery Server 设置为监听并处理这些确认消息。


9.2 ConfirmServiceAdapter

ConfirmServiceAdapter 类建立连接以接收确认消息,并将收到的消息传送到 Content Delivery Server。扩展 ConfirmServiceAdapter 以创建系统的确认服务适配器。

ConfirmServiceAdapter 类位于 com.sun.content.server.confirmservice 软件包中。

9.2.1 connect 方法

public abstract boolean connect() throws ConnectionFailedException

可以使用该方法将 Content Delivery Server 连接到 MMSC,或者将 Content Delivery Server 设置为接收 UDP 消息。

9.2.2 init 方法

public void init(Properties properties) throws ConfirmServiceException

如果需要,可以使用此方法初始化该类的实现。该方法的实现是可选的。

9.2.3 listen 方法

public abstract void listen() throws ConfirmServiceException

可以使用此方法监听确认消息。收到确认消息时,通过使用消息中的信息可以创建 ConfirmResponse 对象并调用 messageReceived 方法。

ConfirmResponse 对象需要下表中显示的信息。


表 9-1 ConfirmResponse 参数

参数

描述

pushType

收到的消息的类型。使用在 PushConstants 类中定义的类型之一(请参见 8.12 PushConstants 类)。

messageID

由外部实体指定以标识消息的 ID。对于来自 MMSC 的消息,此 ID 是由 MMSC 指定的。例如,如果使用 UDP 并且消息包含在 responseObject 中,则该值可能为 Null。

responseStatus

响应的状态。该值可能为 Null。

responseDescription

响应的描述。该值可能为 Null。

responseObject

包含确认消息的二进制对象。例如,如果消息来自 MMSC 并且由消息 ID 进行标识,则该对象可能为 Null。


 

9.2.4 messageReceived 方法

protected void messageReceived(ConfirmResponse confirmResponse) throws ConfirmServiceException

可以使用此方法将确认消息中收到的信息发送到 Content Delivery Server。从 listen 方法的实现中调用此消息。


9.3 使用确认服务 API

cdsapi.jar 文件中提供了确认服务 API 的类。在编译适配器时,此文件必须位于类路径中。为方便起见,$CDS_HOME/dist/cds/staging/jar 目录中提供了所有 Content Delivery Server JAR 文件的副本。在编译所创建的适配器时,请在类路径中使用此缓冲区。

使适配器可用于 Content Delivery Server 取决于所使用的应用服务器,以及是否已部署了该服务器。要使适配器可用,请执行以下操作:

1. 为适配器创建 JAR 文件。

2. 对于所有应用服务器,请将该 JAR 文件放在 $CDS_HOME/dist/cds/lib/external 目录中。

现在,该适配器将包含在所有以后的部署中。

3. 如果现有部署需要使用该适配器,请将该 JAR 文件放在每个部署的 $CDS_HOME/deployment/deployment-name/lib/external 目录中。

如果使用的是 WebLogic Server,则会为您处理类路径。

如果使用的是 Sun Java System Application Server,则会为每个部署更新类路径:

a. 在编辑 $CDS_HOME/deployment/deployment-name/sun/domains/cdsdomain/config/domain.xml 文件之前,先对其进行备份,以便从编辑期间可能引入的任何错误中恢复。

b. 编辑 domain.xml 并修改 java-config 元素,将 JAR 文件的绝对路径添加到 classpath-suffix 属性中。

c. 保存所做的更改。

4. 编辑 $CDS_HOME/deployment/deployment-name/conf 目录中的 ConfirmListener.properties 文件。

a. 定义另一个确认服务处理程序。

以下代码示例显示了要添加到 ConfirmListener.properties 中的语句。


confirmservice.handler=handler-id
confirmservice.handler.handler-id.classname=adapter-name
confirmservice.handler.handler-id.processor.classname=confirm-processor-name
confirmservice.handler.handler-id.pushtype=push-type

 

handler-id 是任意唯一字符串,用于标识所定义的处理程序;adapter-nameConfirmServiceAdapter 类实现的全限定类名。confirm-processor-name 为以下值之一:

push-type 是以下值之一:

b. 保存所做的更改。

5. 重新启动任何现有部署以识别新的 JAR 文件。