我在同一个 Tomcat 上运行的两个单独的战争中使用 Amazon S3 开发工具包。我在我的一项 Spring 服务的 @PostConstruct 中初始化了一个 AmazonS3Client。
如果我单独运行这些战争,通常一切正常。如果我一起运行它们,其中一个(第二个启动)会引发以下异常:
com.amazonaws.AmazonClientException:无法为 XMLReader 初始化 sax 驱动程序
如果发生这种情况,我有一个解决方法,我在捕获 AmazonClientException 后设置以下系统属性:
try {
init();
} catch (AmazonClientException ase) {
System.setProperty("org.xml.sax.driver", "com.sun.org.apache.xerces.internal.parsers.SAXParser");
init();
}
但这当然是可怕的。有一个更好的方法吗?为什么会在这些情况下发生?
更新:起初,似乎将 AmazonS3Client 的初始化移出 @PostConstruct 并延迟初始化它完全防止了这个错误。但显然它有时仍然会发生 - 即使我只进行一场战争而不是两者。