java - JSF 中的 JAXWS 缓存

标签 java jsf jax-ws

我们有一个公开大量 Web 服务的应用程序服务器。我们在一侧运行一个 tomcat,它使用 JSF 应用程序中的这些 Web 服务来提供用户界面。假设我们有一个 bean,它有一个方法“getWebservice()”,该方法返回 jaxws 用于与 webservice 通信的代理类。这使我们能够以最小的努力与 Web 服务交互:使用 wsimport 生成,然后使用 #{myBean.webservice.myProperty} 等

但是,正如您所看到的,在重用公开的方法时,这将需要大量的 Web 服务交互。在我们的用例中,大多数方法都是静态的,至少在 @RequestScoped bean 的持续时间内是这样,因此大多数方法的交互一旦被调用就应该被缓存(至少对于一个请求)。

当前我们的设置是在 bean 中创建包装器服务,并且每个包装器执行完全相同的操作:

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

您会发现这很快就会变得非常令人厌烦。有没有办法注释 jaxws 方法进行缓存?或者我可以根据接口(interface)生成自己的代理类并以某种方式将其“链接”到 jaxws 使用的代理(并执行通用缓存),或者我可以创建自己的注释来执行缓存吗?

最佳答案

您可以创建另一个缓存 Proxy围绕您的Web 服务客户端代理对象,并为其提供 InvocationHandler ,缓存方法调用的结果。

查看this blog post查看完整的分步说明并下载示例代码。

关于java - JSF 中的 JAXWS 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116044/

相关文章:

spring - 如何在 Redis 中存储 JSF session ?

java - CXF 生成的 WSDL 不包含 WS-SecurityPolicy 定义

Java 一个语句中有两个等号?

java - 创建灵活的聊天和视频服务器

Java 归并排序 : Compare and Swap Counters

JSF2/......registerHostUser.xhtml @9,9 <h :head> Tag Library supports namespace: http://java. sun.com/jsf/html,但没有为名称定义标签:head

html - 如何使用 jsf 渲染属性禁用嵌套的标题 html 元素

java - 将类编码到 XSD :Anytype xml

java - Spring Boot 将 JAX-WS webservice 注册为 bean

java - 使用 MigLayout 自动换行