Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Salesforce by (11.9k points)

Hie,

I wrote a java code which connects to Salesforce and updates a value in there, Its is working well and good when i run it from my local system as a standalone java application but my main goal is to take that as a java component in filenet BPM workflow , so when the workflow process gets to this java component then it throws a error as the title

the entire stack stack trace is as follows:

com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/c/24.0/0DF90000000PX8r

    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:129)

    at com.sforce.soap.enterprise.EnterpriseConnection.login(EnterpriseConnection.java:1052)

    at com.sforce.soap.enterprise.EnterpriseConnection.<init>(EnterpriseConnection.java:399)

    at salesforceupdate.SalesForceUpdate.main(SalesForceUpdate.java:70)

    at salesforceupdate.Callin.UpdateSL(Callin.java:19)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)

    at java.lang.reflect.Method.invoke(Method.java:611)

    at filenet.vw.integrator.adaptors.java.VWJavaAdaptor.execute(VWJavaAdaptor.java:426)

    at filenet.vw.integrator.base.VWAdaptorEx$AdaptorAction.run(VWAdaptorEx.java:120)

    at java.security.AccessController.doPrivileged(AccessController.java:284)

    at javax.security.auth.Subject.doAsPrivileged(Subject.java:727)

    at filenet.vw.integrator.base.VWAdaptorEx.run(VWAdaptorEx.java:360)

Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

    at com.ibm.jsse2.n.a(n.java:42)

    at com.ibm.jsse2.tc.a(tc.java:96)

    at com.ibm.jsse2.tc.a(tc.java:340)

    at com.ibm.jsse2.tc.a(tc.java:555)

    at com.ibm.jsse2.tc.a(tc.java:510)

    at com.ibm.jsse2.tc.startHandshake(tc.java:381)

    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:151)

    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:64)

    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1024)

    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:51)

    at com.sforce.ws.transport.JdkHttpTransport.connectRaw(JdkHttpTransport.java:115)

    at com.sforce.ws.transport.JdkHttpTransport.connect(JdkHttpTransport.java:79)

    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:107)

    ... 13 more

Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

    at com.ibm.jsse2.util.e.<init>(e.java:117)

    at com.ibm.jsse2.util.d.a(d.java:20)

    at com.ibm.jsse2.hc.a(hc.java:58)

    at com.ibm.jsse2.hc.checkServerTrusted(hc.java:88)

    at filenet.ws.utils.jsse.FnTrustManager.checkServerTrusted(FnTrustManager.java:156)

    at com.ibm.jsse2.hb.a(hb.java:382)

    at com.ibm.jsse2.hb.a(hb.java:23)

    at com.ibm.jsse2.gb.n(gb.java:295)

    at com.ibm.jsse2.gb.a(gb.java:269)

    at com.ibm.jsse2.tc.a(tc.java:347)

    at com.ibm.jsse2.tc.g(tc.java:416)

    at com.ibm.jsse2.tc.a(tc.java:60)

    ... 21 more

Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

    at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:287)

    at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:143)

    at java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:101)

    at com.ibm.jsse2.util.e.<init>(e.java:17)

    ... 32 more

I have googled everything regarding this error and generated a .crt file of the domain and created a keystore file and mentioned that in my code.

System.setProperty("javax.net.ssl.trustStore","C:\\Program Files\\IBM\\WebSphere\\AppServer\\java\\jre\\bin\\secure.ts");

 System.setProperty("javax.net.ssl.trustStorePassword", "xxxxx");

By the way i even modified key managemnet and certificates in WAS console

But I keep on getting the same error..Don't know what to do , Any help would be great

Thanks in Advance

1 Answer

+1 vote
by (32.1k points)
edited by

I suggest you to not use System.setProperty but, when you set the options when starting the Java process, start with -Djavax.net.ssl.XXX. The reason for this advice is because the IBM security framework may read the options before you set the property (for example, if you have a set of code in a static block of a class). But, of course, this is framework specific and may vary from version to version.

Are you interested in learning Salesforce from scratch! Have a look at this interesting video on Salesforce provided by Intellipaat:

Another way you can make this work is by checking the unnecessary prefixes such as file. Also, you might have set a wrong location for keystore check that as well.

It might help too. 

Want to get certified in Salesforce? Here is the Salesforce Online Training you are looking for!

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...