Доступ к защищенному паролем WSDL в Weblogic при вызове веб-службы - PullRequest
1 голос
/ 05 июля 2010

Мы используем сгенерированные Spring и JAXWS клиентские классы для доступа к веб-сервисам в приложении, развернутом в сети. WSDL, определяющий веб-службу, является удаленным и защищенным паролем (обычная проверка подлинности http). В модульном тесте достаточно определить прокси в папке ~ / .metro с URL-адресом и паролем http, которые будут использоваться при доступе к нему. Есть ли похожий трюк для Weblogic в каком-либо файле конфигурации? Или есть другой способ решить эту проблему?

Ответы [ 2 ]

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

Вы можете предоставить свой собственный Аутентификатор. Таким образом, он будет работать, если сам WDSL защищен базовой HTTP-аутентификацией.

@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
static XxxService service;

public static void main(String[] args) {

    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "password".toCharArray());
        }
    });

    service = new XxxService();
    Xxx port = service.getXxxPort();

    // invoke webservice and print response
    XxxResponse resp = port.foo();
    System.out.println(resp.toString());

}
0 голосов
/ 05 июля 2010

Согласно документации ( Глава 6. Использование Spring Web Services на клиенте ):

6.2.1.1.1. HTTP транспорты

Существует две реализации WebServiceMessageSender интерфейс для отправка сообщений через HTTP. По умолчанию реализация является HttpUrlConnectionMessageSender, который использует возможности, предоставляемые Java сам. Альтернативой является CommonsHttpMessageSender, который использует Jakarta Commons HttpClient. Использование последний, если вам нужно более продвинутый и простая в использовании функциональность (например, аутентификация, HTTP соединение объединение и т. д.).

(...)

В следующем примере показано, как переопределить конфигурацию по умолчанию, и использовать Commons Http для аутентифицироваться с использованием HTTP Аутентификация:

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
    <constructor-arg ref="messageFactory"/>
    <property name="messageSender">
        <bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
            <property name="credentials">
                <bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
                    <constructor-arg value="john"/>
                    <constructor-arg value="secret"/>
                </bean>
            </property>
        </bean>
    </property>
    <property name="defaultUri" value="http://example.com/WebService"/>
</bean>

Вы пробовали это?

Обновление: Поскольку вы используете клиент JAX-WS (это не то, что я понял из «мы используем Spring»), вы можете:

...