Hi,
I have using SOAP client which can talk upto 10 servers at the same time. (this is over https).
I am using Apache Axis, JDK1.4.02, weblogic 8.1 on Linux redhat 9.1.
I have a truststore where all the certificates are stored. I use following code in the client for ssl setup:
System.setProperty("java.p
rotocol.ha
ndler.pkgs
",
"com.sun.net.ssl.internal.
www.protocol");
java.security.Security.add
Provider(n
ew com.sun.net.ssl.internal.s
sl.
Provider());
System.setProperty("javax.
net.ssl.tr
ustStore",
"/myhome/myTrustStore");
System.setProperty("javax.
net.ssl.tr
ustStorePa
ssword", trustStorePasswd);
System.setProperty("javax.
net.ssl.ke
yStoreType
", "jks");
I use keytool to add the certificates in the trust store.
Everything works fine so far as I use one instance of the client at the time. It can talk to all the servers whose certificates are in the store. I am trying only two server's to begin with.
If I run two copies of client, one talking to each of the server's I am supposed to talk to I get following exception :
AxisFault
faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Ser
ver.userEx
ception
faultSubcode:
faultString: javax.net.ssl.SSLHandshake
Exception:
java.security.cert.Certifi
cateExcept
ion: Could not find trusted certificate
faultActor:
faultNode:
faultDetail:
{
http://xml.apache.org/axis/}stackTr
ace: javax.net.ssl.SSLHandshake
Exception:
java.security.cert.Certifi
cateExcept
ion:
Could not find trusted certificate
at com.sun.net.ssl.internal.s
sl.BaseSSL
SocketImpl
.a(DashoA6
275)
at com.sun.net.ssl.internal.s
sl.SSLSock
etImpl.a(D
ashoA6275)
at com.sun.net.ssl.internal.s
sl.SSLSock
etImpl.a(D
ashoA6275)
at com.sun.net.ssl.internal.s
sl.SunJSSE
_az.a(Dash
oA6275)
at com.sun.net.ssl.internal.s
sl.SunJSSE
_az.a(Dash
oA6275)
at com.sun.net.ssl.internal.s
sl.SunJSSE
_ax.a(Dash
oA6275)
at com.sun.net.ssl.internal.s
sl.SSLSock
etImpl.a(D
ashoA6275)
at com.sun.net.ssl.internal.s
sl.SSLSock
etImpl.j(D
ashoA6275)
at com.sun.net.ssl.internal.s
sl.SSLSock
etImpl.sta
rtHandshak
e(DashoA62
75)
at org.apache.axis.components
.net.JSSES
ocketFacto
ry.create(
JSSESocket
Factory.ja
va:213)
at org.apache.axis.transport.
http.HTTPS
ender.getS
ocket(HTTP
Sender.jav
a:157)
at org.apache.axis.transport.
http.HTTPS
ender.invo
ke(HTTPSen
der.java:1
14)
at org.apache.axis.strategies
.Invocatio
nStrategy.
visit(Invo
cationStra
tegy.java:
71)
at org.apache.axis.SimpleChai
n.doVisiti
ng(SimpleC
hain.java:
150)
at org.apache.axis.SimpleChai
n.invoke(S
impleChain
.java:120)
at org.apache.axis.client.Axi
sClient.in
voke(AxisC
lient.java
:180)
at org.apache.axis.client.Cal
l.invokeEn
gine(Call.
java:2526)
at org.apache.axis.client.Cal
l.invoke(C
all.java:2
515)
at org.apache.axis.client.Cal
l.invoke(C
all.java:2
210)
What seems to be the problem? Each client runs as a seperate process. Is there some kind of permission or locking problem with truststore file?
Thanks,
ShahS.
Start Free Trial