Hello,
I’m developing an application with Quarkus and Solace. Quarkus allows you to compile java to a native application.
Compilation is fine, but at runtime I have this issue:
2020-11-13 12:49:18,462 ERROR [io.qua.run.Application] (main) Failed to start application (with profile dev): java.io.FileNotFoundException: null/lib/security/cacerts (No such file or directory)
at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST:Ljava_io_FileNotFoundException_2_0002e_0003cinit_0003e_00028Ljava_lang_String_2Ljava_lang_String_2_00029V(JNIJavaCallWrappers.java:0)
at java.io.FileInputStream.open0(FileInputStream.java)
at java.io.FileInputStream.open(FileInputStream.java:219)
at java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.io.FileInputStream.<init>(FileInputStream.java:112)
at com.solacesystems.jcsmp.secure.SecureProperties.createKeyStore(SecureProperties.java:745)
at com.solacesystems.jcsmp.secure.SecureProperties.loadTrustStore(SecureProperties.java:372)
at com.solacesystems.jcsmp.JCSMPFactory.validate(JCSMPFactory.java:432)
at com.solacesystems.jcsmp.JCSMPFactory.createSession(JCSMPFactory.java:163)
at com.solacesystems.jcsmp.JCSMPFactory.createSession(JCSMPFactory.java:119)
It seems that solace client is using System.getProperty("java.home") to then get the cacerts, but this value is empty and it fails. In native mode there is no JVM and thus no java home. Why is the solace client not using -Djavax.net.ssl.trustStore ? This way we could specify the truststore path manually.
Thanks in advance for your help.
Thanks for your answer. Indeed setting SSL_TRUST_STORE solved the issue. Sorry that I didn’t find it myself…
I don’t think it will be open source soon (but maybe later next year). But let me say that it works really well. I didn’t had any issue with the client library except this SSL problem.
I wouldn’t mind having an official Quarkus Solace extension. I could bring Solace some visibility in the quarkus community. Writing Your Own Extension - Quarkus
Hi @gaetancollaud,
Glad it worked for you and glad the client library is working without further issues! I’m actually being told that -Djavax.net.ssl.trustStore should also have worked so I’ll have to test that out when I get a chance.
Also, I love the idea of having a Quarkus Solace extension! Let’s chat
-Marc
Fyi @gaetancollaud, this was indeed a bug in the API and with JCSMP v10.10 (released yesterday) you should now be able to use -Djavax.net.ssl.trustStore if you’d like.