Java Oracle一致性:如何在复制缓存中设置调用超时?
我在许多weblogic节点上运行一个复制缓存,这些节点也运行OSB。缓存以服务器作为启动类启动。它有一个非常简单的对象缓存,只需使用布尔属性“available”跟踪对象是否正在使用 在OSB中,我对同一个类进行java调用,该类使用处理器在缓存上调用“invoke”,该处理器将对象标记为不可用,然后运行Thread.sleep(31000)。这是一个占位符,我想稍后添加一些冗长的处理 我希望发生的是,如果invoke()调用花费的时间太长,进程应该超时并返回或抛出异常。所以我一直在尝试配置30000毫秒的请求超时来测试这一点。不幸的是,我不知道如何使这个超时发生 我试过:Java Oracle一致性:如何在复制缓存中设置调用超时?,java,oracle,caching,timeout,weblogic,Java,Oracle,Caching,Timeout,Weblogic,我在许多weblogic节点上运行一个复制缓存,这些节点也运行OSB。缓存以服务器作为启动类启动。它有一个非常简单的对象缓存,只需使用布尔属性“available”跟踪对象是否正在使用 在OSB中,我对同一个类进行java调用,该类使用处理器在缓存上调用“invoke”,该处理器将对象标记为不可用,然后运行Thread.sleep(31000)。这是一个占位符,我想稍后添加一些冗长的处理 我希望发生的是,如果invoke()调用花费的时间太长,进程应该超时并返回或抛出异常。所以我一直在尝试配置3
- 将处理器包装在PriorityProcessor中,并在invoke()之前调用setRequestTimeout(30000)
- 将
30000
添加到缓存配置中的
元素
- 将
30000
添加到缓存配置中的
元素
- 将
30000
添加到缓存配置中的
元素
- 创建一个tangosol-coherence-override.xml并向
元素添加一个监护人超时
,该元素的“类型”与缓存配置中的服务“名称”匹配
- 将sleep()调用更改为Thread.sleep(310000),只是为了查看5分钟后是否会出现任何现成的默认值
詹姆斯好的,我得到了答案,得到了他的一些帮助 基本上,复制缓存不支持超时,结果证明它对我的系统来说不是一个合适的选择 解决办法是:
方案
元素,其数字大于1(我选择了10,但这只是您希望支持的并发实例的数量)