javax.net.ssl.SSLException:填充长度无效

时间:2015-08-28 08:38:29

标签: java web-services ssl wsdl

尝试通过https执行Web服务时,我收到此异常。此异常发生我尝试获取服务实例的移动。 我按照以下步骤使用wsImport.exe工具生成webservice客户端。

  1. 我手动从网站上下载了wsdl

  2. 使用wsImport工具生成客户端java文件

  3. 在eclipse
  4. 中将java文件添加到我的项目中
  5. 如下所示编写测试客户端以测试服务实例

    public static void main(String[] args) {
    
        String certificatesTrustStorePath = "c:/Apps/Java/jdk1.8.0_25/jre/lib/security/cacerts";
        // if I don't set the store path, I get below 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
    
        System.setProperty("javax.net.ssl.trustStore", certificatesTrustStorePath);
    
        URL wsdlLocation = null;
        String https_url ="https://localhost/services/WebService/wsdl/WebService.wsdl";
        try {
            wsdlLocation = new URL(https_url);
    
        } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } 
    
        //This is the line where I get the below execption 
        WebServiceService webServiceService = new WebServiceService(wsdlLocation, 
            new QName("http://webservice.com", "WebServiceService"));  
    
    }
    
  6. 使用上面的代码我下面的execption

        Exception in thread "main" com.sun.xml.internal.ws.wsdl.parser.InaccessibleWSDLException: 2 counts of InaccessibleWSDLException.
    
    javax.net.ssl.SSLException: Invalid Padding length: 76
    javax.net.ssl.SSLException: Invalid Padding length: 50
    
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
    at javax.xml.ws.Service.<init>(Unknown Source)
    at com.webservice.WebServiceService.<init>(WebServiceService.java:42)
    at com.client.Client.main(Client.java:46)
    

    每次执行时,前面的数字都是&#34; 无效的打击垫长度&#34;是不同的。这次是76和50.其他时间是67,106等。

    请帮忙, 我使用的是最新版本的Java,即1.8.0_51。

2 个答案:

答案 0 :(得分:1)

Java 8有这个问题...用Java 7测试过。相同的代码工作正常。

答案 1 :(得分:0)

似乎与此问题类似:https://community.oracle.com/thread/2506695

你尝试过使用bouncycastle吗?