[RESOLVIDO]: Consumir webservice com SSL - erro: Place the resource correctly in the classpath

Olá,

Criei um aplicativo simples Em Java SE para consumir os serviços de um webservice do Protheus (Microsiga), com SSL, certificado criado pelo OpenSSL.

Está ocorrendo o seguinte erro:

erro ao tentar realizar o login: Cannot find ‘https://192.168.2.122/ws/USERPORTAL.apw?WSDL’ wsdl. Place the resource correctly in the classpath.

  1. Usando Netbeans 7.1, criei um projeto simples de um aplicativo Java SE, para exemplificar o erro;
  2. Adicionei um cliente para serviço web, baseando-me na url do WSDL ( http://192.168.2.122/ws/USERPORTAL.apw?WSDL );
  3. Na classe principal, adicionei a chamada ao método de login deste servilo USERPORTAL;
  4. Fiz as devidas alterações na classe principal para chamar tal método e reproduzir o problema, conforme segue:
package teste;

import br.com.microsiga.webservices.userportal.LOGINUSERSTRUCT;

/**
 *
 * @author vicente
 */
public class Teste {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String mensagem;
        try {
            LOGINUSERSTRUCT result = prtlogin("teste", "teste", "1", "");
            System.out.println(result.getUSERCODE());

        } catch (Exception ex) {
            mensagem = ex.getMessage();

            System.out.println(" erro ao tentar realizar o login: " + mensagem);
        }

    }

    private static LOGINUSERSTRUCT prtlogin(java.lang.String userlogin, java.lang.String userpassword, java.lang.String usertype, java.lang.String portalaccess) {
        br.com.microsiga.webservices.userportal.USERPORTAL service = new br.com.microsiga.webservices.userportal.USERPORTAL();
        br.com.microsiga.webservices.userportal.USERPORTALSOAP port = service.getUSERPORTALSOAP();
        return port.prtlogin(userlogin, userpassword, usertype, portalaccess);
    }
}

Este mesmo serviço acessado via http não dá problema. Já via https ocorre a bronca acima.

Comunidade,

Resolvido. Segue a solução:

  1. Atualizei para o NetBeans 7.2;

  2. Após tentar executar este mesmo projeto, o erro que surgiu foi outro:
    HTTP transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

  3. Em nova pesquisa devido a este novo erro, encontrei a solução perfeita no Blog do Patrick Espake: http://blog.patrickespake.com/2012/05/28/como-lidar-com-certificados-ssl-invalidos-no-java/

Feitas a adaptações, o problema sumiu!

Outro local encontrado foi do Vítor Pamplona (vfpamp), grande colaborador da comunidade Java: http://www.jroller.com/vfpamp/entry/suportando_ssl_nos_clientes_java