Apache Soap 2.3.1 Problem With SSL
"Kevin Sprague" <[email protected]>
| Newsgroups | gmane.text.xml.soap.user |
|---|---|
| Message-ID | <008801c40ed6$e60a2030$6401a8c0@SPRAGUEXPPROF> |
I have a web service running on Weblogic 6.1 that is configured to =
require SSL. I can successfully hit the WSDL and web service URI using =
https from my IE browser. When I try to invoke the web service from a =
standalone Java client (following the sample at =
http://ws.apache.org/soap/docs/install/FAQ_Tomcat_SOAP_SSL.html), I =
receive the following error:
*** Exception *** : [SOAPException: faultCode=3DSOAP-ENV:Client; =
msg=3DError opening socket: java.lang.IllegalStateException: Not enough =
cryptography available to enable a cipher suite!; =
targetException=3Djava.lang.IllegalArgumentException: Error opening =
socket: java.lang.IllegalStateException: Not enough cryptography =
available to enable a cipher suite!]
at =
org.apache.soap.transport.http.SOAPHTTPConnection.send(SOAPHTTPConnection=
.java:354)
at org.apache.soap.rpc.Call.invoke(Call.java:248)
at =
apacheRPCWeatherClientWSSSL.main(apacheRPCWeatherClientWSSSL.java:63)
I have been troubleshooting this for several hours with no success. Any =
help is greatly appreciated.
Thanks.... Kevin
And here is the code:
import java.io.*;
import java.net.*;
import java.util.*;
import java.security.Security;
import javax.net.ssl.SSLSocketFactory;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
/**
* @author SpraguK
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class apacheRPCWeatherClientWSSSL {
/**
*=20
*/
public apacheRPCWeatherClientWSSSL() {
super();
// TODO Auto-generated constructor stub
}
=20
public static void main (String[] args) {
=20
try {
=20
// Set the location of the certficate store housing the key material.
System.setProperty("javax.net.ssl.truststore", =
"c:\\bea61sp5\\wlserver6.1\\config\\TPASWEBDEV\\client.keystore");
=20
=20
// Use Sun's implementation of a URL handler that supports https.
System.setProperty("java.protocol.handler.pkgs", =
"com.sun.net.ssl.internal.www.protocol");
=20
// Dynamically register Sun's SSL provider
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
=20
// Whew, after all that, we can finally use https in the URL
URL url =3D new URL =
("https://PHI17082FOPSDEV:443/tpasWeather1.0/weatherService1.0");
String service =3D "urn:weather";
String zipCode =3D "19311";
Call call =3D new Call ();
call.setTargetObjectURI (service);
call.setMethodName ("getTemp");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Vector params =3D new Vector ();
params.addElement (new Parameter("string", String.class, zipCode, =
null));
call.setParams(params);
Response resp =3D call.invoke (url, "" );
if (resp.generatedFault ())
{
Fault fault =3D resp.getFault ();
System.out.println("Generated fault: " + fault);
}
else
{
Parameter result =3D resp.getReturnValue ();
System.out.println ( result.getValue() );
}
=20
} catch (Exception e) {
System.out.println("*** Exception *** : "+getStackTraceAsString(e));
}
}
=20
public static String getStackTraceAsString(Throwable e)
{
ByteArrayOutputStream ostr =3D new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(ostr));
return(ostr.toString());
}
}