Вызов веб-сервиса EJB создает исключение SSL - PullRequest
1 голос
/ 03 октября 2011

У меня есть веб-сервис JAX-WS, который выполняет вызовы удаленного EJB на том же сервере.Все работает на Glassfish 3.1.1, и приложения развернуты EAR - один для веб-сервиса, другой для EJB.Это прекрасно работает локально, но при развертывании на тестовом сервере я получаю типичные исключения в отношении недоверенных (самозаверяющих) SSL-сертификатов.Вот соответствующая выдержка:

Caused by: com.sun.xml.ws.client.ClientTransportException: 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
        at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:132)

Исключение происходит именно на той строке в веб-сервисе, где выполняется вызов EJB.Это озадачивает меня, потому что я не ожидал, что что-то будет иметь отношение к HTTPS в этой точке.

Наиболее многообещающий аспект на данный момент заключается в том, что это связано с координацией транзакций, как описано здесь ,который должен использовать HTTPS по умолчанию.Однако настройка com.sun.xml.ws.tx.preferredScheme = http не влияет на проблему.

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 06 октября 2011

Это связано с тем, что клиент не знает, какое хранилище доверенных сертификатов ему следует использовать, поэтому он не доверяет службе, и SSL-соединение не выполняется. Запустите «клиент» со следующими VMargs:

-Djavax.net.ssl.trustStore=${truststore.location}
-Djavax.net.ssl.trustStorePassword=${ssl.password}

Если вы используете NetBeans, его можно установить в свойствах проекта.

...