系列导航

一、swift对象存储环境搭建

二、swift添加存储策略

三、swift大对象--动态大对象

四、swift大对象--静态态大对象

五、java操作swift对象存储(官网样例)

六、java操作swift对象存储(resultful方式实现)

七、java操作swift对象存储(动态大对象)

八、java操作swift对象存储(静态大对象)

swift的官方提供了一些java操作swift对象存储的操作方法,但是内容比较简单稍微复杂的没有找到合适的样例,后面我会使用http请求的方式实现

一、jar包

org-json.jar 需要使用maven的同学们自己找到依赖转换一下就可以

二、基础方法

package base;

//官网的操作样例
import org.javaswift.joss.client.core.ContainerPaginationMap;
import org.javaswift.joss.client.factory.AccountConfig;
import org.javaswift.joss.client.factory.AccountFactory;
import org.javaswift.joss.client.factory.AuthenticationMethod;
import org.javaswift.joss.model.Account;
import org.javaswift.joss.model.Container;
import org.javaswift.joss.model.PaginationMap;
import org.javaswift.joss.model.StoredObject;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap; public class SwiftClientWork {
private static final String module = SwiftClientWork.class.getName(); static String authurl = "http://192.168.0.1:8080/auth/v1.0";
static String username = "admin:admin";
static String password = "admin"; /**
* 身份证存储容器
*/
static Account account ; private static SwiftClientWork instance = null; public static synchronized SwiftClientWork getInstance(){
if(instance==null){
instance = new SwiftClientWork();
}
return instance;
} static {
try{
AccountConfig config = new AccountConfig();
config.setUsername(username);
config.setPassword(password);
config.setAuthUrl(authurl); config.setAuthenticationMethod(AuthenticationMethod.BASIC);
account = new AccountFactory(config).createAccount();
}catch (Exception e){
e.printStackTrace();
}
} //给账户设置Temp-Url-Key
public void setTempUrlKey(String key){
account.setAndSaveMetadata("Temp-Url-Key", key);
System.out.println(account.getMetadata());
} /**
* CREATE A CONTAINER
* @param containerName
*/
public void createContainer(String containerName){
try{
Container container = account.getContainer(containerName);
container.create();
}catch (Exception e){
e.printStackTrace();
}
} /**
* DELETE A CONTAINER
* @param containerName
*/
public void deleteContainer(String containerName){
try{
Container container = account.getContainer(containerName);
container.delete();
}catch (Exception e){
e.printStackTrace();
}
} /**
* CREATE AN OBJECT
* @param containerName
* @param objectName
* @param inFilePath
*/
public StoredObject createObject(String containerName, String objectName, String inFilePath){
try{
/**
StoredObject object = container.getObject("dog.png");
object.uploadObject(new File("/dog.png"));
System.out.println("Public URL: "+object.getPublicURL());
*/
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(new File(inFilePath));
/*InputStream input = new FileInputStream(new File(inFilePath));
object.uploadObject(input);
input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
*
* @param containerName
* @param objectName
* @param inFile
* @return
*/
public StoredObject createObject(String containerName, String objectName, File inFile){
try{
/**
StoredObject object = container.getObject("dog.png");
object.uploadObject(new File("/dog.png"));
System.out.println("Public URL: "+object.getPublicURL());
*/
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(inFile);
/*InputStream input = new FileInputStream(new File(inFilePath));
object.uploadObject(input);
input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* ADD/UPDATE OBJECT METADATA
* @param containerName
* @param objectName
* @param metadatas
*/
public void addOrUpdateObjectMetadata(String containerName, String objectName, Map<String, Object> metadatas){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> metadata = new TreeMap<String, Object>(); for(String key: metadatas.keySet()){
String value = metadatas.get(key).toString();
System.out.println("key:"+key+" vlaue:"+value); metadata.put(key, value);
} //Map<String, Object> metadata = new TreeMap<String, Object>();
//metadata.put("key", "value");
object.setMetadata(metadata);
}catch (Exception e){
e.printStackTrace();
}
} //上传一个带属性值的对象
public StoredObject createObjectWithMetadata(String containerName, String objectName, String inFilePath, Map<String, Object> metadatas){
try{ Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(new File(inFilePath)); Map<String, Object> metadata = new TreeMap<String, Object>();
for(String key: metadatas.keySet()){
String value = metadatas.get(key).toString();
System.out.println("key:"+key+" vlaue:"+value);
metadata.put(key, value);
}
object.setMetadata(metadata); return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST OWNED CONTAINERS
*/
public Collection<Container> containerList(){
try{
Collection<Container> containers = account.list();
for (Container currentContainer : containers) {
System.out.println(currentContainer.getName());
} return containers;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST A CONTAINER’S CONTENT
* @param containerName
* @return
*/
public Collection<StoredObject> containerObjects(String containerName){
try{
Container container = account.getContainer(containerName);
Collection<StoredObject> objects = container.list();
for (StoredObject currentObject : objects) {
System.out.println(currentObject.getName());
} return objects;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST A CONTAINER’S CONTENT
* @param containerName
* @param prefix
* @param pageSize
* @return
*/
public void containerObjectsPage(String containerName,String prefix,int pageSize){
try{
Container container = account.getContainer(containerName); //ContainerPaginationMap(Container container, String prefix, Integer pageSize)
PaginationMap paginationMap = new ContainerPaginationMap(container,prefix,pageSize); //list(PaginationMap paginationMap, int page)
//Returns a number equal to pageSize of Container elements, starting with the first element after the Container named the same as marker.
//后面这个参数经过测试不起任何作用
Collection<StoredObject> objects =container.list(paginationMap,50000); for (StoredObject currentObject : objects) {
System.out.println(currentObject.getName());
} /* Iterator iter = container.list(paginationMap,1).iterator();
while(iter.hasNext()){
StoredObject object = (StoredObject) iter.next();
String fileName = object.getName();
System.out.println(fileName);
}
*/ }catch (Exception e){
e.printStackTrace();
} } public Map getObjectMetadaTest(String containerName, String objectName) {
try {
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> returnedMetadata = object.getMetadata();
// for (String name : returnedMetadata.keySet()) {
// System.out.println("META / " + name + ": " + returnedMetadata.get(name));
// }
return returnedMetadata;
} catch (Exception e) {
System.out.println("该对象没有元数据属性------------->");
//e.printStackTrace();
}
return null;
} /**
* RETRIEVE AN OBJECT’S METADATA
* @param containerName
* @param objectName
*/
public void getObjectMetada(String containerName, String objectName){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> returnedMetadata = object.getMetadata();
for (String name : returnedMetadata.keySet()) {
System.out.println("META / "+name+": "+returnedMetadata.get(name));
}
}catch (Exception e){
e.printStackTrace();
}
} /**
* RETRIEVE AN OBJECT
* @param containerName
* @param objectName
* @param downPath
*/
public void getObject(String containerName, String objectName, String downPath){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.downloadObject(new File(downPath)); /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
}catch (Exception e){
e.printStackTrace();
}
} /**
* DELETE AN OBJECT
* @param containerName
* @param objectName
*/
public void deleteObject(String containerName, String objectName){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.delete();
}catch (Exception e){
e.printStackTrace();
}
} //获取get权限的tempurl
//second 有效时间 单位秒
public void getObjectGetTempUrl(String containerName, String objectName,int second ){
try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName);
String url=object.getTempGetUrl(second); url = url +"&inline";
System.out.println(url); }catch (Exception e){
e.printStackTrace();
}
} //获取put权限的tempurl
//second 有效时间 单位秒
public void getObjectPutTempUrl(String containerName, String objectName,int second ){
try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName);
String url=object.getTempPutUrl(second); url = url +"&inline";
System.out.println(url); }catch (Exception e){
e.printStackTrace();
}
} }

三、调用的主方法

package mian;

import java.io.File;
import java.util.HashMap;
import java.util.Map; import org.javaswift.joss.model.Container;
import org.javaswift.joss.model.StoredObject; import base.SwiftClientWork; //官网操作swift 调用
public class SwiftClientWorkMain { /**
* @param args
*/
public static void main(String[] args) {
SwiftClientWork swiftClientWork = new SwiftClientWork(); //创建容器
swiftClientWork.createContainer("Container1"); //删除容器
swiftClientWork.deleteContainer("Container1"); //上传对象(本地文件路径上传)
swiftClientWork.createObject("Container1", "1.zip", "E://1//1.zip"); //上传对象(本地文件路径上传)
File file = new File("E://1//1.zip");
swiftClientWork.createObject("Container1", "2.zip", file); //给现有的对象增加后者更新属性
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "123123123");
swiftClientWork.addOrUpdateObjectMetadata( "Container1","2.zip", map); //上传一个带属性值的对象
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "123123123");
swiftClientWork.createObjectWithMetadata("Container1","3.zip", "E://1//1.zip" ,map ); //查看容器列表
swiftClientWork.containerList(); //查看容器中的对象列表
swiftClientWork.containerObjects("containerName1"); //对容器中的对象可以进行前缀和返回条数的限制 如下:对象名称前缀为3 且结果值返回5条记录
swiftClientWork.containerObjectsPage("containerName1","3",5); //查看对象的属性
swiftClientWork.getObjectMetada("Container1","3.zip"); //下载对象
swiftClientWork.getObject( "Container1","3.zip","E://8.zip"); //删除对象
swiftClientWork.deleteObject( "Container1","3.zip"); //获取tempurl测试
swiftClientWork.getObjectTempUrl("bigContainer", "1.jpg",600 ); } }

五、java操作swift对象存储(官网样例)的更多相关文章

  1. swift对象存储

    swift对象存储 简介 OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.对象存储,用于 ...

  2. swift对象存储安装

    对象存储服务概览 OpenStack对象存储是一个多租户的对象存储系统,它支持大规模扩展,可以以低成本来管理大型的非结构化数据,通过RESTful HTTP 应用程序接口. 它包含下列组件: 代理服务 ...

  3. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 四

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  4. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  5. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 二

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  6. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  7. 九、Swift对象存储服务(双节点搭建)

    九.Swift对象存储服务(双节点搭建) 要求:Controoler节点需要2块空盘 Compute节点需要再加2块空盘 本次搭建采用Controller 和 Compute双节点节点做swift组件 ...

  8. Java操作Sqoop对象

    Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Had ...

  9. Golang 调用 aws-sdk 操作 S3对象存储

    Golang 调用 aws-sdk 操作 S3对象存储 前言 因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧. 基础的功 ...

  10. java 覆盖hashCode()深入探讨 代码演示样例

    java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...

随机推荐

  1. linux防火墙使用及配置

    Linux防火墙使用及配置 介绍 防火墙是网络安全的重要组成部分,它帮助保护服务器和计算机免受未经授权访问.恶意攻击和各种网络威胁.在Linux系统中,有一些工具和技术可用于设置和配置防火墙,其中最常 ...

  2. jmeter-逻辑处理器while

    测试工具:jmeter 业务逻辑:A接口上传文件,B接口查询文件上传状态,如果状态不为4,需要再次查询(上传文件后,需要有短暂时间的识别,压测时并发大导致识别时间不可控)当为4时,跳出循环, 思路:增 ...

  3. [ABC274E] Booster

    Problem Statement In a two-dimensional plane, there are $N$ towns and $M$ chests. Town $i$ is at the ...

  4. Java连接phoenix问题

    这个错误的原因是找不到文件,所以要在本地配置一下hadoop的环境变量 下载 将其中hadoop 这个文件放在c盘windows下system32目录下就ok了

  5. Vue重用组件

    1.是什么? 这里主要是简单入门使用一下,复杂高阶的用法笔者暂时还没了解到 Vue重用组件是指可以被多个Vue实例重复使用的组件.这些组件可以包含自定义的状态和事件处理程序,并且可以在整个应用程序中共 ...

  6. 数字孪生和GIS融合会为各自带来什么样的改变?

    数字孪生和地理信息系统(GIS)是两个强大的技术,它们在各自领域发挥着重要作用.而当数字孪生与GIS融合时,将会为它们带来更加深远的改变和增益. 数字孪生技术以数字化的方式模拟和复制现实世界中的物理对 ...

  7. 【C#】【WinForm】MDI窗体

    MDI窗体的相关学习使用 1.设置MDI父窗体 在属性中找到IsMdiContainer选项,设置为True 2.添加MDI子窗体,在项目中依次选择添加->窗体,然后一直默认即可 添加后的项目目 ...

  8. modeless dialog in html

    <!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8& ...

  9. CSS语法检查利器之csslint

    本文于2015年底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 背景 前段时间研究使用YUI Compressor压缩项目里的js和cs ...

  10. 记录一次K8s pod被杀的排查过程

    问题描述 今天下午运维反馈说我们这一个pod一天重启了8次,需要排查下原因.一看Kiban日志,jvm没有抛出过任何错误,服务就直接重启了.显然是进程被直接杀了,初步判断是pod达到内存上限被K8s ...