我在一些运行OSB的weblogic节点上运行了一个复制缓存。缓存以服务器作为启动类启动。它有一个非常简单的对象缓存,可以使用布尔属性“available”来跟踪它们是否正在使用。
从OSB我将java调用发送到同一个类,它在缓存上使用将对象标记为不可用的处理器调用“invoke”,然后运行Thread.sleep(31000)。这是我想稍后添加的一些冗长处理的占位符。
我想要发生的是,如果invoke()调用花费的时间太长,则进程应该超时并返回或抛出异常。所以我一直在尝试配置一个30000毫秒的请求超时来测试它。不幸的是,我无法弄清楚如何使超时发生。
我试过了:
将处理器包装在PriorityProcessor中并在调用()之前调用setRequestTimeout(30000)
添加<request-timeout
&gt; 30000 </request-timeout
&gt;到<replicated-scheme/
&gt;缓存配置中的元素
添加<tasktimeout
&gt; 30000 </tasktimeout
&gt;到<replicated-scheme/
&gt;缓存配置中的元素
添加<guardian-timeout
&gt; 30000 </guardian-timeout
&gt;到<replicated-scheme/
&gt;缓存配置中的元素
创建tangosol-coherence-override.xml并添加一个监护人超时<init-param
&gt;到<service
&gt;元素谁的“类型”匹配缓存配置中的服务“名称”
更改sleep()调用Thread.sleep(310000)只是为了看看是否有任何开箱即用的默认值会在5分钟后启动。
这些都没有导致任何类型的超时,处理器只是睡了很久我告诉它然后返回没有错误。
以前是否有人做过类似的事情并且可以给我一些建议?非常感谢。
由于
詹姆斯
答案 0 :(得分:2)
好的,所以我在Tim Middleton的帮助下得到了答案。
基本上复制的缓存不支持超时,但事实证明它不适合我的系统!
解决方案是:
<distributed-cache
&gt;缓存配置中的方案。<thread-count
&gt;方案的元素与数字&gt; 1(我选择了10但是你想要支持多个并发实例)。