使用动态缓存提升 WebSphere Process Server 和 WebSphere ESB 解决方案的性能
2010-03-17 00:00:00 来源:WEB开发网将清单 2 中的导入添加到类中。
清单 2. 缓存组件导入
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.ibm.websphere.cache.DistributedObjectCache;
既然有了对 DynaCache 对象缓存实例的引用,您必须实现该接口操作,如清单 3 所示。
清单 3. 接口操作实现
public DataObject retrieveLocationDetails(DataObject request) {
// retrieve key to cache from the request
String key = request.getString("id");
DataObject responseObject = null;
// get response from cache
responseObject = cache == null ? null : (DataObject) cache.get(key);
// if cache miss invoke service and update cache
if (responseObject == null) {
DataObject responseMessage = (DataObject)
locateService_LocationServicePartner().invoke("retrieveLocationDetails", request);
responseObject = responseMessage == null ? null :
responseMessage.getDataObject("response");
if ((cache != null) && (responseObject != null)) {
cache.put(key, responseObject);
}
}
return responseObject;
现在花点时间来理解这段代码。作为 WebSphere Process Server 和 WebSphere ESB 运行时架构基础的 WebSphere Application Server 提供了一种分布式的缓存基础架构和 API。
可以使用 JNDI 名称 services/cache/distributedmap 找到现成的默认对象缓存实例。对于本教程来说,使用该实例是可以的,但在生产系统中,最佳实践是为您想缓存响应的每个服务创建一个专用实例。这将保证缓存实例的独立性,并为禁用缓存条目和清空缓存提供了更细的粒度。
接口方法将会从请求中检索 id 属性,然后将其用作从缓存中检索响应的键值。如果未找到对应的响应,代码将调用服务伙伴。
更多精彩
赞助商链接