10


流式传输 API

Sun Java System Content Delivery Server 流式传输 API 在 Content Delivery Server 和所选的流式传输服务器之间提供一个接口。可以使用此 API 编写流式传输适配器以使用流式传输服务器。

流式传输 API 包含以下类和接口:

流式传输 API 的类和接口位于 com.sun.content.server.streaming 软件包中。有关这些类和接口的其他信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的 Javadoc 工具的 HTML 输出。


10.1 一般处理流程

流式传输适配器是 StreamingAdapter 接口的实现,用于管理将数据传输到流式传输服务器以及向订户传送数据的过程。

本节介绍了 Content Delivery Server 和流式传输服务器之间的以下交互:

10.1.1 储存

当 Vending Manager 储存按需流式传输的内容时,Content Delivery Server 将创建一个描述内容的 StreamingContent 对象。然后,调用 uploadContent 方法以将内容传输到流式传输服务器。如果出现错误,流式传输适配器必将抛出 StreamingException。如果流式传输适配器无法连接到流式传输服务器,则流式传输适配器必将抛出 StreamingServerConnectionFailedException。当 Content Delivery Server 看到异常时,将停止储存过程,并且不储存内容。

10.1.2 取消储存

当 Vending Manager 取消储存按需流式传输的内容时,Content Delivery Server 将创建一个描述内容的 StreamingContent 对象,并调用 deleteContent 方法以便从流式传输服务器中删除该内容。如果出现错误,则流式传输适配器必将抛出 StreamingException。如果流式传输适配器无法连接到流式传输服务器,流式传输适配器必须抛出 StreamingServerConnectionFailedException。如果 Content Delivery Server 看到异常,仍会将内容标记为已取消储存,并且订户无法使用该内容。

10.1.3 购买

当订户购买内容或请求免费内容时,将执行以下操作之一:


10.2 StreamingAdapter 接口

StreamingAdapter 接口用于与所使用的流式传输服务器进行通信。请实现此接口,以便为流式传输服务器创建流式传输适配器。

10.2.1 addInfoToSDPContent 方法

public byte[] addInfoToSDPContent(byte[] binary, long categoryItemId, String contentId, String inCodedTicket, String fileExtension, String contentName, long mimeTypeId, String vendingAccountId) throws StreamingServerConnectionFailedException, StreamingException;

当订户购买 SDP 表示的流式传输内容时,Content Delivery Server 将调用 addInfoToSDPContent 方法。可以使用此方法,将其他编码的信息添加到 SDP 文件中。例如,可以使用此方法在 URL 中添加 Content Delivery Server 或所使用的流式传输服务器可能需要的其他参数,如编码证明书或订户标识符。如果出现错误,请确保实现抛出相应的异常。

10.2.2 deleteContent 方法

public void deleteContent(StreamingContent streamingContent, String vendingAccountId) throws StreamingServerConnectionFailedException, StreamingException;

当 Vending Manager 取消储存流式传输的内容时,Content Delivery Server 将调用 deleteContent 方法。可以使用此方法从流式传输服务器中删除内容。应传递描述内容的对象以及储存内容的 Vending Manager 的 ID。如果出现错误,请确保实现抛出相应的异常。

10.2.3 getSDP 方法

public byte[] getSDP(long categoryItemId, String contentId, String inCodedTicket, String fileExtension, String contentName, String vendingAccountId, String liveURL) throws StreamingServerConnectionFailedException, StreamingException;

当订户请求访问 SDP 文件表示的流式传输内容时,将会调用 getSDP 方法。可以使用此方法为 contentId 标识的内容返回 SDP。如果流式传输服务器仅提供了通过 URL 访问内容的权限,则不需要实现此方法。如果出现错误,请确保实现抛出相应的异常。

10.2.4 getStreamingURL 方法

public String getStreamingURL(long categoryItemId, String contentId, String inCodedTicket, String fileExtension, String contentName, long mimeTypeId, String vendingAccountId, String liveURL) throws StreamingServerConnectionFailedException, StreamingException;

当订户购买流式传输的内容时,将会调用 getStreamingURL 方法。Content Delivery Server 提供了标识内容和购买事务的信息。可以使用此方法提供订户访问内容项所需的 URL。如果流式传输服务器未提供通过 URL 访问内容的权限,则不需要实现此方法。如果出现错误,请确保实现抛出相应的异常。

10.2.5 returnsSDP 方法

public boolean returnsSDP();

Content Delivery Server 调用 returnsSDP 方法以确定是通过 SDP 文件还是 URL 来访问流式传输服务器上的内容。如果通过 SDP 文件访问内容,则返回 true 并实现 getSDP 方法。如果通过 URL 访问内容,则返回 false 并实现 getStreamingURL 方法。

10.2.6 uploadContent 方法

public void uploadContent(StreamingContent streamingContent, String vendingAccountId) throws StreamingServerConnectionFailedException, StreamingException;

当 Vending Manager 储存流式传输的内容时,Content Delivery Server 将调用 uploadContent 方法。可以使用此方法将内容复制到流式传输服务器。应传递描述内容的对象以及储存内容的 Vending Manager 的 ID。如果出现错误,请确保实现抛出相应的异常。


10.3 使用流式传输 API

位于 $CDS_HOME/deployment/deployment-name/lib/cdslib 目录中的 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 目录下的 streaming.properties 文件中,将 streaming.adapter.impl.class 属性设置为流式传输适配器的全限定名称。

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