2012-06-20 5 views
1

У нас есть сервер приложений, предоставляющий множество веб-сервисов. Мы запускаем tomcat на стороне, которая использует эти веб-службы в приложениях JSF для предоставления пользовательского интерфейса. Предположим, что у нас есть компонент, который имеет метод getWebservice(), который возвращает класс прокси, используемый jaxws для связи с webservice. Это позволяет нам взаимодействовать с вебом-сервисом с минимальными усилиями: генерировать с помощью wsimport, а затем использовать # {myBean.webservice.myProperty} и т.д.Кэширование JAXWS в JSF

Однако, как вы можете видеть, это потребует много взаимодействия WebService при повторном использовании открытых методов , В нашем usecase большинство методов довольно статичны, по крайней мере, на протяжении всего цикла @RequestScoped, поэтому взаимодействие большинства методов должно быть кэшировано после его вызова (по крайней мере для одного запроса).

В настоящее время наша установка является создание службы оболочки в бобе и каждая обертка делает то же самое:

if (methodResponse == null) 
    methodResponse = getWebservice().getMethod(); 
return methodResponse; 

Вы можете видеть, что это становится очень утомительным очень быстро. Есть ли способ аннотировать метод jaxws для кеширования? Или я могу создать собственный собственный прокси-класс на основе интерфейса и как-то «связать» его с прокси-сервером, используемым jaxws (и выполнить общее кэширование), или я могу создать свою собственную аннотацию, которая выполняет кэширование?

ответ

1

Вы можете создать другое кэширование Proxy вокруг вашего веб-клиента службы прокси-объекта, и предоставить ему InvocationHandler, который кэширует результат вызова методов.

Отъезд this blog post, чтобы увидеть полную версию шаг за шагом инструкция и скачать образец кода.

+0

Я еще не успел создать прокси-сервер в соответствии с учебным пособием, но я просмотрел статью и, похоже, именно то, что мне нужно. Благодаря! – nablex

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