Servicio Web en WAS
Publicado por Sara (1 intervención) el 28/05/2009 17:54:31
Soy novata en el mundo de los web services y mi duda es la siguiente:
Esto implementando un cliente en un máquina con JDK 1.5 de SUN para acceder a través de un proxy a un servicio web via https que está desplegado en un WAS 6.1. Se utiliza sólo certificado en el lado del servidor y como identificación del cliente se utiliza el usertoken WSS Oasis. El código del cliente es el siguiente:
// PROXY
System.setProperty("https.proxySet","true");
System.setProperty("https.proxyHost","proxy");
System.setProperty("https.proxyPort", "80");
System.setProperty("https.proxyUser", "usuario");
System.setProperty("https.proxyPassword", "password");
//CERTIFICADO
System.setProperty("javax.net.ssl.trustStore","C:/Java/jdk1.5.0_16/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
Security.setProperty("ssl.SocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl");
EngineConfiguration config = new FileProvider("client-config.wsdd");
Prueba_Service service = new Prueba_ServiceLocator(config);
Prueba_PortType stb = service.getPruebaSOAP();
resultado = stb.metodo(entrada);
donde client-config.wsdd es:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
<globalConfiguration>
<requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllSender" >
<parameter name="user" value="usuario"/>
<parameter name="passwordCallbackClass" value="PWCallback"/>
<parameter name="action" value="UsernameToken"/>
<parameter name="password" value="password"/>
<parameter name="passwordType" value="PasswordText"/>
</handler>
</requestFlow>
</globalConfiguration>
</deployment>
Pero no funciona, me da el error:
javax.net.ssl.SSLException: Unrecognized SSL handshake.
No se si el problema puede ser en la parte
Security.setProperty("ssl.SocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl");
Que en vez de ser de SUN deberÃa usar las de IBM, ya que estoy accediendo a un servicio web en WAS de IBM.
Si alguién me pudiera dar un pista lo agredeceria mucho.
Gracias.
Esto implementando un cliente en un máquina con JDK 1.5 de SUN para acceder a través de un proxy a un servicio web via https que está desplegado en un WAS 6.1. Se utiliza sólo certificado en el lado del servidor y como identificación del cliente se utiliza el usertoken WSS Oasis. El código del cliente es el siguiente:
// PROXY
System.setProperty("https.proxySet","true");
System.setProperty("https.proxyHost","proxy");
System.setProperty("https.proxyPort", "80");
System.setProperty("https.proxyUser", "usuario");
System.setProperty("https.proxyPassword", "password");
//CERTIFICADO
System.setProperty("javax.net.ssl.trustStore","C:/Java/jdk1.5.0_16/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
Security.setProperty("ssl.SocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl");
EngineConfiguration config = new FileProvider("client-config.wsdd");
Prueba_Service service = new Prueba_ServiceLocator(config);
Prueba_PortType stb = service.getPruebaSOAP();
resultado = stb.metodo(entrada);
donde client-config.wsdd es:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
<globalConfiguration>
<requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllSender" >
<parameter name="user" value="usuario"/>
<parameter name="passwordCallbackClass" value="PWCallback"/>
<parameter name="action" value="UsernameToken"/>
<parameter name="password" value="password"/>
<parameter name="passwordType" value="PasswordText"/>
</handler>
</requestFlow>
</globalConfiguration>
</deployment>
Pero no funciona, me da el error:
javax.net.ssl.SSLException: Unrecognized SSL handshake.
No se si el problema puede ser en la parte
Security.setProperty("ssl.SocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl");
Que en vez de ser de SUN deberÃa usar las de IBM, ya que estoy accediendo a un servicio web en WAS de IBM.
Si alguién me pudiera dar un pista lo agredeceria mucho.
Gracias.
Valora esta pregunta


0