2017-02-06 2 views
1

Я хочу настроить управляемый клиент JAX-WS (с помощью @WebServiceRef) вне приложения, предпочтительно с помощью консоли администратора WebLogic.Настройка клиента JAX-WS @WebServiceRef извне приложения

Например, укажите имя пользователя и пароль, которые будут отправлены в HTTP-запросе для аутентификации на сервере при выполнении вызова веб-службы.

Чтобы быть ясным, выполнение этого вручную требует, чтобы я реализовал его, а использование функции, предоставляемой контейнером, требует только конфигурации.

Я смог сделать это с помощью SAP NetWeaver, возможно ли это сделать с помощью WebLogic?

@Stateless 
public class HolidayClientImpl { 

    // I want this dependency to be already configured, instead of doing it myself. 
    @WebServiceRef 
    private MyRemoteService myRemoteService; 

} 

ответ

0

После долгих поисков я не нашел эту функциональность доступной в WebLogic. Он не существует, по крайней мере, в версиях 10.3.6 и 12.

Это означает, что вы должны выполнить конфигурацию клиента, что-то вроде этого:

MyPort port = service.getHTTPPort(); 
Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext(); 

// URL 
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://www.remoteservice.com/service"); 

// Timeouts 
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 5000); 
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 30000); 

// Authentication 
requestContext.put(BindingProvider.USERNAME_PROPERTY, "user"); 
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password"); 
+0

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

+0

@DavidLakatos Нет Давид, вы можете сохранить значения (имя пользователя, пароль и т. Д.) В другом месте за пределами вашего приложения (база данных, файл свойств и т. Д.) И изменить те, которые не установлены/развернуты. Мой код имеет статические значения, но это упрощение кода, просто демонстрирующее, как вы выполняете конфигурацию клиента. Дело здесь в том, что WebLogic не предоставляет внутреннюю конфигурацию JAX-WS. Обычно мы сохраняем свойства в базе данных или в файле XML. Вы можете использовать кеш или нет, в зависимости от вашего сценария. Обычно это хорошая идея сохранить его в памяти, поскольку такие значения не меняются часто. – BonanzaOne

+0

Моим основным подходом было бы изменить некоторое свойство приложения через план развертывания Weblogic во время развертывания без изменения кода или использования внешних ресурсов (например, файла свойств, db). Как вы думаете, это возможно? –

Смежные вопросы