How to create Object in Object Storage Using JAVA?

这一生的挚爱 提交于 2019-12-12 04:29:52

问题


I know how to create object by get authenticate and than call API

Here below link is information available how to get authenticate, Unauthorized error while connecting Object Storage from API from Postman

Is there any library available in JAVA to perform these operation?

I got library from below link but it seems old one and not working, https://github.com/softlayer/softlayer-object-storage-java/tree/master/sl-objectstorage

If anyone know Can you please post how to operate it?

By using library getting below error,

Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
    at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
    at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
    at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
    at org.restlet.Client.handle(Client.java:153)
    at org.restlet.routing.Filter.doHandle(Filter.java:150)
    at org.restlet.routing.Filter.handle(Filter.java:197)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
    at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
    at org.restlet.resource.ClientResource.get(ClientResource.java:636)
    at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
    at com.softlayer.objectstorage.Client.get(Client.java:177)
    at com.softlayer.objectstorage.Client.auth(Client.java:128)
    at com.softlayer.objectstorage.Client.<init>(Client.java:107)
    at com.softlayer.objectstorage.Container.<init>(Container.java:77)
    at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
    at spark.KafkaConsumer.main(KafkaConsumer.java:51)

Nov 21, 2016 1:24:18 PM org.restlet.resource.ClientResource retry
INFO: A recoverable error was detected (1002), attempting again in 2000 ms.
Nov 21, 2016 1:24:20 PM org.restlet.engine.adapter.HttpClientHelper handle
INFO: Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
    at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
    at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
    at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
    at org.restlet.Client.handle(Client.java:153)
    at org.restlet.routing.Filter.doHandle(Filter.java:150)
    at org.restlet.routing.Filter.handle(Filter.java:197)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
    at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
    at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
    at org.restlet.resource.ClientResource.get(ClientResource.java:636)
    at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
    at com.softlayer.objectstorage.Client.get(Client.java:177)
    at com.softlayer.objectstorage.Client.auth(Client.java:128)
    at com.softlayer.objectstorage.Client.<init>(Client.java:107)
    at com.softlayer.objectstorage.Container.<init>(Container.java:77)
    at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
    at spark.KafkaConsumer.main(KafkaConsumer.java:51)

Nov 21, 2016 1:24:20 PM org.restlet.resource.ClientResource retry
INFO: A recoverable error was detected (1002), attempting again in 2000 ms.
Nov 21, 2016 1:24:22 PM org.restlet.engine.adapter.HttpClientHelper handle
INFO: Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
    at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
    at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
    at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
    at org.restlet.Client.handle(Client.java:153)
    at org.restlet.routing.Filter.doHandle(Filter.java:150)
    at org.restlet.routing.Filter.handle(Filter.java:197)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
    at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
    at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
    at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
    at org.restlet.resource.ClientResource.get(ClientResource.java:636)
    at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
    at com.softlayer.objectstorage.Client.get(Client.java:177)
    at com.softlayer.objectstorage.Client.auth(Client.java:128)
    at com.softlayer.objectstorage.Client.<init>(Client.java:107)
    at com.softlayer.objectstorage.Container.<init>(Container.java:77)
    at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
    at spark.KafkaConsumer.main(KafkaConsumer.java:51)

回答1:


Unfortunately, you can only upload files using: Softlayer Object Storage Java Client (it's not possible to create objects), here an example for authentication, create container and upload a file using the client:

package com.softlayer.objectstorage.main;

import java.util.HashMap;
import java.util.Map;
import com.softlayer.objectstorage.Container;
import com.softlayer.objectstorage.ObjectFile;


public class ObjectStorage {
    String baseUrl;
    String user;
    String password;

    public ObjectStorage(String baseUrl, String user, String password){
        this.baseUrl = baseUrl;
        this.user = user;
        this.password = password;
    }

    public void createContainer(String containerName){

        try{
            Container containerCreate = new Container(containerName, baseUrl, user,
                    password, true);
            containerCreate.create();

        }catch (Exception e)
        {
            System.out.println(e);
        }
    }

    public void UploadFile(String containerName, String fileName, String path)
    {
        try{
            ObjectFile oFile = new ObjectFile(fileName, containerName, baseUrl, user, password, true);
            Map<String, String> tags = new HashMap<String, String>();
            tags.put("testtag", "Test Value");
            String newOb = oFile.uploadFile(path, tags);
        }catch (Exception e)
        {
            System.out.println(e);
        }


    }

    public static void main(String[] args) {

        /**
         * Define Object Storage's parameters
         */
        String baseUrl = "https://dal05.objectstorage.softlayer.net/auth/v1.0/";
        String user = "set me";
        String password = "set me";

        // Define the container name to create
        String containerName = "containerTest";
        // Define the file name to create in the object storage
        String fileName = "newTest.txt";
        // Define the location path from file that you wish to upload
        String pathFile = "C:\\Users\\Ruber Cuellar\\Documents\\test.txt";

        // Create Object Storage connection
        ObjectStorage objectStorage = new ObjectStorage(baseUrl, user, password);
        // Create Container
        objectStorage.createContainer(containerName);
        // Upload file
        objectStorage.UploadFile(containerName, fileName, pathFile);

    }
}

I hope it helps, let me know any doubt or comment



来源:https://stackoverflow.com/questions/40720973/how-to-create-object-in-object-storage-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!