IBM / ibm-cos-sdk-java

ibm-cos-sdk-java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.lang.IllegalArgumentException

ichabondcrane opened this issue · comments

Hi, I've tried to set up this project in java via Eclipse Mars and Maven and it works fine when I run the code manually. I can see that I can connect to IBM Object Storage and I can display the list of buckets that I have.
However, I need to run this code in a Domino Server as a java agent.. And I need to run the java agent on schedule. I have retrieved all the jar files needed (got it via Maven) and saved them in my domino's jvm/lib /ext folder. However, I keep getting this error message when I run the agent on schedule (or even manually)

error message: java.lang.ExceptionInInitializerError

error message: at java.lang.J9VMInternals.initialize(J9VMInternals.java:221)
error message: at com.ibm.cloud.objectstorage.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:142)
error message: at com.ibm.cloud.objectstorage.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137)
error message: at com.ibm.cloud.objectstorage.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100)
error message: at com.ibm.cloud.objectstorage.ClientConfiguration.(ClientConfiguration.java:66)
error message: at java.lang.J9VMInternals.initializeImpl(Native Method)
error message: at java.lang.J9VMInternals.initialize(J9VMInternals.java:199)
error message: at InsertToObjStorage.createClient(InsertToObjStorage.java:91)
error message: at InsertToObjStorage.(InsertToObjStorage.java:50)
error message: at JavaAgent.NotesMain(JavaAgent.java:174)
error message: at lotus.domino.AgentBase.runNotes(Unknown Source)
error message: at lotus.domino.NotesThread.run(Unknown Source)
error message: Caused by:
error message: java.lang.IllegalArgumentException
error message: at com.ibm.cloud.objectstorage.internal.config.InternalConfig.loadfrom(InternalConfig.java:235)
error message: at com.ibm.cloud.objectstorage.internal.config.InternalConfig.load(InternalConfig.java:249)
error message: at com.ibm.cloud.objectstorage.internal.config.InternalConfig$Factory.(InternalConfig.java:304)
error message: at java.lang.J9VMInternals.initializeImpl(Native Method)

We need to run this on schedule because we are converting some notes document into pdf and we have to save those pdfs into Object Storage, thus, we need this to run on schedule. I can also assure you that the java.policy of the Domino Server allows this type of operation. In the past, we have initially saved the pdfs in Cloudant and it was working but unfortunately we ran into some file size restrictions and so we have to move to IBM Cloud Storage.
I hope you can help. Thanks and hope to hear from you soon.

I've managed to resolve the error message above , but I'm getting a different error message: when I try to execute the putObject, (am trying to upload the pdf to the bucket)

Mar 29, 2018 12:19:54 PM InsertToObjStorage
SEVERE: com.ibm.cloud.objectstorage.services.s3.model.AmazonS3Exception: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: f8df7bea-b509-4d4c-90a5-790422ad070e), S3 Extended Request ID: null
com.ibm.cloud.objectstorage.services.s3.model.AmazonS3Exception: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: f8df7bea-b509-4d4c-90a5-790422ad070e), S3 Extended Request ID: null
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
error message: at com.ibm.cloud.objectstorage.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
error message: at com.ibm.cloud.objectstorage.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3633)
error message: at com.ibm.cloud.objectstorage.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3580)
error message: at com.ibm.cloud.objectstorage.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1587)
error message: at com.ibm.cloud.objectstorage.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1449)
error message: at InsertToObjStorage.(InsertToObjStorage.java:90)
error message: at JavaAgent.NotesMain(JavaAgent.java:174)
error message: at lotus.domino.AgentBase.runNotes(Unknown Source)
error message: at lotus.domino.NotesThread.run(Unknown Source)
error message: Mar 29, 2018 12:19:54 PM JavaAgent NotesMain

@ichabondcrane glad to hear that that you managed to resolve the earlier classpath issue. The second error is occurring because the bucket specified on the put object request cannot be found on COS. Can you confirm that the bucket has been created and that the S3 client has write privileges to it.

@Patrick-Browne - are you an ibmer? I'm able to see the bucket ..through this code, which was the sample from the ibm site.. https://github.com/IBM/ibm-cos-sdk-java

public static void listBuckets(AmazonS3 cos)
{
System.out.println("Listing buckets");
final List bucketList = _cos.listBuckets();
for (final Bucket bucket : bucketList) {
System.out.println(bucket.getName());
}
System.out.println();
}

@Patrick-Browne - we've managed to solve the issue and worked with my architect to get the right credentials. Your advise helped a lot to steer me in the right direction !!! thanks again..

@ichabondcrane - I too receive the java.lang.ExceptionInInitializerError when running a domino java agent. Can you please advise the steps to be followed to resolve the error.