AXIS2 и JAX-WS, как я могу изменить квитирование SSL?

Мне нужно настроить квитирование SSL при вызове API JAX-WS поверх Axis2.

Я вообще не нахожу ссылок на то, как это сделать. С Metro я могу установить собственный SSLSocketFactory, но для этого используется нестандартный API.

Как мне получить доступ к движку Axis, чтобы я мог перенастроить его перед отправкой запроса на мыло?


person David Nouls    schedule 20.08.2009    source источник


Ответы (4)


Вероятно, у вас есть класс-заглушка, расширяющий org.apache.axis2.client.Stub. Вы можете установить его транспортные свойства:

YourStubClass stub = new YourStubClass();
stub.initStub(endpointUrl);
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CACHED_HTTP_CLIENT, soapHttpClient);

Где endpointUrl — это строка, содержащая URL-адрес конечной точки, а soapHttpClient — экземпляр HTTP-клиента Apache (org.apache.commons.httpclient.HttpClient).

Когда вы создаете свой объект HttpClient, вы можете настроить квитирование SSL.

person Alceu Costa    schedule 21.08.2009
comment
Я попробую этот флаг. После долгих поисков я наконец нашел способ получить ServiceClient и установил обработчик протокола для параметров... но почему-то он не используется. Может быть, CACHED_HTTP_CLIENT может быть решением? У меня проблема в том, что это Axis, доступный в WebSphere, и они, кажется, подключили свои собственные транспортные классы. Я веду переговоры с IBM, чтобы получить решение, но они, похоже, не разбираются в своих собственных инструментах. Они позволяют мне только установить хранилище ключей в виде файла, что недостаточно для моего случая. - person David Nouls; 21.08.2009
comment
Надеюсь, что это работает! Нам пришлось сократить транспорт для Axis, чтобы включить базовую HTTP-аутентификацию, и я полагаю, что она, вероятно, будет работать и для вашей настройки SSL. Кстати, вы упомянули файл хранилища ключей, я не знаю, хотите ли вы этого, но можно программно добавить к нему новый SSL-сертификат... - person Alceu Costa; 21.08.2009
comment
Нет, это не сработало. Очень жаль. На обычном Axis2 он работает нормально, но не на версии WebSphere. Добавление SSL-сертификатов в SSLtrust — это не то, чем я хочу заниматься. Нам нужен только один сертификат в хранилище ключей при подключении. Мы не хотим принимать сертификат, подписанный другим сертификатом, потому что эти центры сертификации являются разными банковскими учреждениями. Изменения, которые могут произойти, действительно малы, но недостаточно малы для параноиков-банкиров. - person David Nouls; 24.08.2009

Axis2 настраивается с помощью файла axis.xml. Здесь находится раздел о HTTP-транспорте.

Вы также можете ознакомиться с модулем rampart и узнать, как его настроить.

Надеюсь, это поможет. Там не так много информации по этой теме.

person Michael Sharek    schedule 20.08.2009
comment
И куда бы я поместил этот axis.xml? И как я могу иметь один на вызов? Мне нужен программный доступ к настройке параметров. - person David Nouls; 21.08.2009
comment
axis2.xml должен быть помещен в папку conf в WEB-INF вашего веб-приложения. - person Mathias G.; 07.09.2017

Я отказался от Axis2 и WebSphere SOAP. Потребовалось меньше времени, чтобы просто реализовать мой собственный JAX-WS, который поддерживает все, что мне нужно. Очень жаль.

person David Nouls    schedule 30.09.2009

Вы можете установить SSLSocketFactory по умолчанию для HttpsURLConnection, используя статический метод setDefaultSSLSocketFactory. Затем это будет фабрика сокетов для всех новых экземпляров HttpsURLConnection. У нас это работает в приложении SE, я думаю, что это будет работать и с Axis.

person Stefan Rasmusson    schedule 23.05.2011