Как регистрировать сервисные вызовы с помощью Proxy, созданного JaxWsProxyFactoryBean - PullRequest
0 голосов
/ 06 декабря 2011

Я хочу предоставить компонент для создания клиента веб-службы.До сих пор мой подход заключался в расширении JaxWsProxyFactoryBean и переопределении метода create и предоставлении параметров setter и getter для таких параметров, как timeout.

@Override
public synchronized Object create() {

    //do some stuff here
    Object result = super.create();
    //here too

    return result;
}

Каков подходящий способ получения вызова прокси-сервера?Я пытался установить Interceptor с getInInterceptors().add(new MyInterceptor());, но JaxWsProxyFactoryBean хочет только PhaseInterceptor.Но я не знаю, как мне установить все атрибуты на этом Перехватчике, и если это правильный путь ...

1 Ответ

0 голосов
/ 07 декабря 2011

Я нашел решение, но оно не на 100% идеально.

Я реализовал интерфейс LogicalHandler. Установите его в FactoryBean и проверьте в обработчике, является ли сообщение исходящим или входящим.

public class LoggingHandler implements LogicalHandler<LogicalMessageContext>

метод:

public boolean handleMessage(LogicalMessageContext context) {
    Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

    if (outboundProperty.booleanValue()) {
        //log here
    } else {
        //or here
    }
    return true;
}

Это прекрасно работает, за исключением ситуации, когда я вызываю метод без ответа. Тогда метод вызывается только один раз, а не дважды, если есть ответ.

...