сгенерировать клиент веб-сервиса из HTTPS wsdl с использованием Java во время выполнения Axis2

#web-services #axis2 #java-7 #wsdl2java #wsimport

#веб-сервисы #apache-axis #java-7 #wsdl2java #wsimport

Вопрос:

Я пытаюсь сгенерировать классы клиентов веб-сервиса (SOAP) с использованием WSDL (https://dpdmsdmmk1.fmr.com:12210/cmis/services/RepositoryService?wsdl ), в URL-адресе которого указан HTTPS.

Paste_WSDL_Below: https://dpdmsdmmk1.fmr.com:12210/cmis/services/RepositoryService?wsdl

След 1: Из командной строки wsimport -d C:UsersA550857DesktopJay -расширение -keep -p com.gatewayedi.ws -XadditionalHeaders вставка_wsdl_below

Ответ в командной строке:

анализ WSDL…

[ОШИБКА] sun.security.validator.Исключение ValidatorException: ошибка построения пути PKIX: su n.security.provider.certpath.Исключение SunCertPathBuilderException: не удается найти допустимый путь к сертификации запрошенной цели

Не удалось прочитать документ WSDL: Paste_WSDL_Below, потому что 1) не удалось найти документ; / 2) документ не удалось прочитать; 3) корневой элемент документа отсутствует .

[ОШИБКА] сбой.noservice= Не удалось найти wsdl: service в предоставленных WSDL (ах):

Необходимо предоставить хотя бы один WSDL с хотя бы одним определением сервиса.

Не удалось проанализировать WSDL.

След 2: из командной строки

{C:UsersA550857DesktopJaySoftsaxis2-1.6.2bin >wsdl2java.bat -вставка uri_wsdl_below

Ответ в командной строке:

Используя AXIS2_HOME: C:UsersA550857DesktopJaySoftsaxis2-1.6.2 Используя JAVA_HOME: C:Program Files (x86)Javajdk1.7.0_03 log4j: ПРЕДУПРЕЖДЕНИЕ Не удалось найти отправителей для logger (org.apache.axis2.i18n.Project ResourceBundle ресурсов). log4j: ПРЕДУПРЕЖДЕНИЕ, пожалуйста, правильно инициализируйте систему log4j. Исключение в потоке «main» org.apache.axis2.wsdl.codegen.Исключение CodeGenerationException : ошибка при разборе WSDL в org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerat ionEngine.java:181) в org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) в org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) Вызвано: javax.net.ssl.SSLHandshakeException: sun.security. валидатор.Исключение валидатора: ошибка построения пути PKIX: sun.security.provider.certpath.Исключение SunCertPath BuilderException: не удается найти действительный путь сертификации к запрошенной цели в sun.security.ssl.Предупреждения.Получает исключение (Alerts.java:192) в sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1868) в sun.security.ssl.Handshaker.fatalSE (Handshaker.java:276) в sun.security.ssl.Handshaker.fatalSE (Handshaker.java:270) в sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker. java:1337) в sun.security.ssl.ClientHandshaker.ProcessMessage(ClientHandshaker.jav a: 154) в sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) в sun.security.ssl.Handshaker.process_record(Handshaker.java:804) в sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:998) в sun.security.ssl.SSLSocketImpl. Выполните начальное рукопожатие(SSLSocketImpl. java:1294) в sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1321 ) в sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1305 ) в sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java : 523) в sun.net.www.protocol.https.Абстрагируйтесь от HttpsURLConnection.connect (AbstractDelegateHttpsURLConnection.java:185) на sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296) на java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468 ) на sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(httpsurlconnectionimpl.java:338) в org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerat ionEngine.java:99) … еще 2 Вызвано: sun.security.validator.Исключение ValidatorException: ошибка построения пути PKIX: sun.security.provider.certpath.Исключение SunCertPathBuilderException: не удается найти путь сертификации достоверности к запрошенной цели в sun.security.validator.PKIXValidator.Создайте (PKIXValidator.java:385) в sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.jav a:292) в sun.security.validator.Validator.validate(Validator.java:260) в sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.j ava:326) в sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerIm pl.java:231) в sun.security.ssl. X509TrustManagerImpl.Проверяемый сервер (X509TrustMan agerImpl.java:126) в sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker. java:1319) … еще 15 Вызвано: sun.security.provider.certpath.Исключение SunCertPathBuilderException: не удается найти действительный путь сертификации к запрошенной цели в sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCert PathBuilder.java:196) на java.security.сертификат.CertPathBuilder.build(CertPathBuilder.java:268) в sun.security.validator.PKIXValidator.доБуилд(PKIXValidator.java:380) … еще 21 }

Среда, которую я использую: Axis2-1.6.2, Java7, WSDL:Paste_WSDL_Below

Пожалуйста, предложите это. я могу просматривать WSDL в браузере с соответствующим содержимым.

Комментарии:

1. Есть предложения, пожалуйста, помогите мне быстро

Ответ №1:

У вас есть два варианта:

1) Импортируйте сертификат сервера в хранилище доверия вашего jdk (пример: http://www.coderanch.com/t/134619/Security/JDK-trust-Certificate). Вы получаете исключение, потому что ваш JDK не доверяет сертификату сервера.

2) Загрузите wsdl на свой локальный диск, включая xsd-файлы, на которые даны ссылки, если они присутствуют, и запустите wsimport для локального wsdl, а не wsdl с https-страницы.

Я бы выбрал второй подход, поскольку он намного проще.

Комментарии:

1. я выполнил шаг 1, добавил сертификат, но по-прежнему получаю ошибку java.security.cert.CertificateException: No subject alternative DNS name matching XXXXX.co.ke found. Проблема со вторым шагом заключается в том, что сгенерированный java-код содержит URL файла для загруженного check.wsdl вместо URL веб-сайта.

2. На самом деле первый шаг сработал. я передавал XXXXX.co.ke вместо www.XXXX.co.ke