openstack swift 文档(八):Java Storlet 编写和部署指导

这是Java特定storlet编写和部署指南。 本指南补充了编写和部署storlet的更一般的指南,应该首先阅读。 要编写Java storlet,您将需要将SCommon.jar作为开发和测试指南中描述的构建storlet过程的一部分。

将.jar导入Eclipse中的Java项目并实现org.openstack.storlet.common.IStorlet接口。 该接口有一个单一的方法,如下所示:

public void invoke(ArrayList<StorletInputStream> inStreams,
                   ArrayList<StorletOutputStream> outStreams,
                   Map<String,String> parameters, StorletLogger logger) throws StorletException;

下面是一个类图,说明了上述API中涉及到的类。
这里写图片描述

  1. StorleInputStream用于将对象的数据流传输到storlet中。 每当Storlet获取对象作为输入时,都会提供类的实例。 实际上,它被用于所有的storlet调用场景,以流的形式传输对象的数据和元数据。 要使用数据则调用getStream()来获取java.io.InputStream对象,在其上调用read()。 要使用元数据则调用getMetadata()方法。
  2. StorletObjectOutputStream。 在所有的调用场景中,使用这个类的一个实例来调用这个storlet。
    • 使用setMetadata方法设置对象的元数据。
    • 使用getStream获取java.io.OutputStream,您可以在其上write()对象的内容。
    • 请注意,必须调用setMetadata。此外,它必须在写入数据之前调用。 下面给出了关于使用StorletObjectOutputStream的其他指导。
  3. StorletLogger。 StorletLogger类支持一个名为emitLog的方法,并接受一个String。 storlet日志被写入主机。

当通过Swift REST API调用时,调用方法将被如下调用:
1. inStreams数组将包括一个或多个类型为StorleInputStream的元素,以请求的URI来表示对象(以及可能的额外资源)。
2. outStreams将包括一个类型为StorleObjectOutputStream的单个元素,表示返回给用户的响应。
参数图包括发送的执行参数。 这些参数可以在空间执行请求中指定。
3. 一个StorletLogger实例。

Tips

  1. 这些storlet在open-jdk 8环境中执行。 因此,storlet代码所需的任何在open-jdk 8之外的任何依赖项都应该表示为storlet dependencies,并与storlet一起上传。 下面的部署部分将详细介绍。
  2. 在某些情况下,storlet可能需要知道storlet.jar的路径以及保存在Linux容器中的dependencies。一个原因可能是需要调用二进制依赖。要获得该路径,请使用以下代码:
// Get the path of this class image
String strJarPath = StorletUtils.getClassFolder(this.getClass());

Deploying a Java Storlet

下是部署Java storlet的具体指导原则:
1. 实现该storlet的编译类需要以.jar形式打包。 此jar不能包含SCommon.jar。
2. 类实现依赖的任何jar应该作为单独的jar上传。
3. 上传的Java storlet的名称必须是<name> - <version>的格式,例如identitystorlet-1.0.jar
4. ‘X-Object-Meta-Storlet-Main’元数据key是实现IStorlet接口的类的名称。 例如”org.openstack.storlet.identity.IdentityStorlet”

Deploying a Java Dependency

  1. Java dependency必须是.jar或可执行文件

猜你喜欢

转载自blog.csdn.net/u010521366/article/details/77507487