Sun Java System Content Delivery Server 内容管理 API 提供 Content Delivery Server 与内容管理系统之间的接口。使用此 API 可以编写内容管理适配器,以便在内容发送到订户的设备时对内容二进制进行程序校验或更改内容信息。例如,可以创建内容管理适配器,以便添加用于处理数字权限管理 (DRM) 的代码。
请注意,内容管理适配器处理收到的调用需要一些时间,这会延迟到订户的内容传送。尽量将内容管理 API 的使用限制为不增加过多开销的操作。
内容管理 API 包括
ContentManager
接口:用于实现将 Content Delivery Server 与内容管理系统进行集成的接口。ContentManager
接口提供了多种方法以访问有关内容的信息。ContentInfo
类:一种类,包含内容对象信息,例如内容描述符和二进制代码、内容描述符和二进制代码的 MIME 类型、内容大小和类型(例如 MIDlet、ringtone 等)以及事务详细信息,例如一步或两步下载。 ContentException
类:内容管理 API 抛出的异常。使用此类可以报告在处理内容信息时或是在购买事务中出现的错误。ContentConstants
类:定义访问内容元数据的 ContentInfo
对象使用的关键字值的类。
有关这些类的其他信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html
处的 Javadoc 工具的 HTML 输出。
内容管理 API 用于处理 Content Delivery Server 与外部内容管理系统或 DRM 服务器之间的通信。内容和事务的详细资料保留在 ContentInfo
对象中。使用此 API 可以访问和操作内容传送给订户时的内容信息。
本节介绍设备、Content Delivery Server 及内容管理适配器之间的信息流。
当订户在 Subscriber Portal 中单击“类别”下的内容标题时,将启动内容列表请求。
ContentInfo
对象。此信息显示给订户或由 Content Delivery Server 使用。getContentInfos
并传递列表中各项的 ContentInfo
对象。 getContentInfos
的实现可以更改系统所需的内容信息。此时只有内容列表中显示给订户的信息应进行修改。当订户在 Subscriber Portal 的“结果”页面中单击内容项名称或“更多详细资料”时,将启动有关特定内容项详细信息的请求。事务步骤将在下面进行介绍。
getContentInfo
。方法的实现可以返回有关内容的详细信息,例如其二进制代码和描述符 MIME 类型、其内容大小和类型(例如 ringtone 或 MIDlet)以及事务详细信息。订户选择从设备购买内容时将启动获取内容的进程。通常,该内容必须在传送到订户之前进行程序校验。可以根据很多因素进行程序校验,例如订户电话类型(CDMA 或 GSM)、记帐模型(订阅或使用)、内容类型或其他特征。
ContentInfo
对象。getContentDescriptor
以处理内容详细资料并对描述符文件进行适当更新。 ContentInfo
对象并将该对象传递给内容管理适配器。getContentBinary
以创建更新的内容二进制文件。
ContentManager
接口提供 Content Delivery Server 与内容管理系统或 DRM 服务器之间的接口。您可以对其提供的方法进行实现,以便在内容二进制代码、描述符和其他信息传送给订户之前对它们进行修改。
该类中的方法将 ContentInfo
对象和 BillingInfo
对象作为参数。ContentInfo
对象包含内容二进制代码、内容描述符文件和其他信息,例如内容二进制代码和描述符 MIME 类型、内容大小和类型,以及下载内容所需的步骤数。
BillingInfo
对象包含事务详细资料,例如记帐模型。此对象还包含订户信息。有关记帐和 BillingInfo
对象的详细信息,请参见第 3 章“记帐 API”。
ContentManager
接口位于 com.sun.content.server.content
包
中。
abstract ContentInfo getContentInfo(ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException
此方法在订户请求有关单个内容项的信息时由 Content Delivery Server 调用。ContentInfo
对象包含关于初始内容项的信息,例如内容二进制代码和描述符 MIME 类型、估计的内容大小和类型(例如 ringtone 或 MIDlet)以及下载该内容所需的步骤数。
abstract ContentInfo[] getContentInfos(ContentInfo[]inContentInfos, BillingInfo[] inBillingInfos) throws ContentException
此方法在订户请求有关类别中内容项列表的信息时由 Content Delivery Server 调用。此方法只应该更改内容列表中显示的信息。
abstract ContentInfo getContentDescriptor(ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException
此方法在订户启动请求将内容描述符下载到设备上时由 Content Delivery Server 调用。Content Delivery Server 检索内容描述符文件。内容描述符和二进制代码将传递到内容管理系统。内容管理系统可以更新内容描述符和信息(包括大小),并将其返回到 Content Delivery Server,以便传递给订户。
abstract ContentInfo getContentBinary(ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException
此方法在订户启动请求将内容二进制代码下载到设备上时由 Content Delivery Server 调用。在调用 getContentBinary
时可以将二进制代码传递到内容管理适配器。要传送给订户经过程序校验的内容二进制代码必须返回到 Content Delivery Server。
内容管理 API 的类可以在 cdsapi.jar
(位于 $CDS_HOME/deployment/
deployment-name/lib/cdslib
目录)中找到。
编译适配器时,cdsapi.jar
文件和 foundation.jar
文件必须位于类路径中。
要使适配器可用于 Content Delivery Server:
$CDS_HOME/deployment/
deployment-name/lib/external
目录中,以便在执行过程中 Content Delivery Server 可以找到该文件。Content Delivery Server 需要重新启动才能发觉新的 JAR 文件。
$CDS_HOME/deployment/
deployment-name/conf
目录中的 security.config
文件,以添加 module.security.contentmanager
属性和设置 module.security.contentmanager.enabled
属性。
现有 module.security.contentmanager
属性指向 Content Delivery Server 附带的 DRM 代理所使用的具体实现,该属性必须第一个出现。在现有的那一个属性后面再添加一个 module.security.contentmanager
属性,并将此属性设置为您所实现的 ContentManager
接口的全限定包和类名。将 module.security.contentmanager.enabled
设置为 true 以表明适配器可用,并且该属性应由 Content Delivery Server 调用。例如,
module.security.contentmanager=com.sun.content.server.content.external.SunContentManager module.security.contentmanager=myapps.adapters.ContentManagerImpl module.security.contentmanager.enabled=true
代码示例 4 显示了 ContentManager
接口的样例实现。
import com.sun.content.server.content.*; import com.sun.content.server.billing.BillingInfo; public class ContentManagerImpl implements ContentManager { public ContentInfo getContentInfo( ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException { // Update the information that is shown to the user return inContentInfo; } public ContentInfo[] getContentInfos( ContentInfo[] inContentInfos, BillingInfo[] inBillingInfos) throws ContentException { // Iterate through each ContentInfo object and update the // information that is shown to the user when a list of // content is shown. return inContentInfos; } public ContentInfo getContentDescriptor( ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException { // Update content download descriptor return inContentInfo; } public ContentInfo getContentBinary( ContentInfo inContentInfo, BillingInfo inBillingInfo) throws ContentException { // Update content binary, binary MIME type return inContentInfo; } }
定制指南 Sun Java™ System Content Delivery Server,版本 2004Q1 |
版权所有 © 2004 Sun Microsystems, Inc. 保留所有权利。必须依据许可证条款使用。