我有一个系统可以缓存启动时SOAP调用的微小/简单结果
我需要的情况下才能够重新加载启动其缓存(如果SOAP服务是死的),也使用此缓存文件处理多个实例的可能性
我选择使用java.util.prefs,但Java的内置自动同步线程间断性地失效(使用默认的JVM 30年代后备存储同步的时间为1%)倾销以下除外:
Jan 8, 2010 12:30:07 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
Run Code Online (Sandbox Code Playgroud)
我怀疑这个错误,但这是固定在1.5(虎-B40),以及我们对这个盒子Java 5的是"1.5.0_16-B02".
我现在怀疑,这可能是因为我们有多个JVM共享这个后备存储,但是这似乎并没有对我们的其他机器的情况发生.
谁能证实这一点?有什么风险?
如果我的方法有缺陷,我应该作为替代方案使用什么?
Kev*_*ght 10
"我现在怀疑这可能是因为我们有多个JVM共享这个Backing Store"
绝对是这样的!如果两个JVM尝试同时锁定文件,那么这就是您所看到的.
具体细节取决于锁的类型,操作系统和文件系统.
您可能希望尝试在try/catch块中包装导致此操作的操作,然后在失败时重试该操作.