案发现场
| 软件 | 版本 |
|---|---|
| OS | Mac 10.15.7 |
| JDK | 1.8 |
| tomcat | 7 |
Caused by: javax.naming.OperationNotSupportedException: Context is read only
at org.apache.naming.NamingContext.checkWritable(NamingContext.java:962)
at org.apache.naming.NamingContext.close(NamingContext.java:762)
at com.itplh.web.context.JndiComponentContext.close(JndiComponentContext.java:424)
... 4 more
原因分析
由于javax.naming.Context是只读的,在关闭应用的回调函数中,我们手动调用了它的 close 方法。
通过 DEBUG 我们能发现当前 Context 的exceptionOnFailedWrite值为true

解决方案
在webapp/META-INF/context.xml调整配置
<Context jndiExceptionOnFailedWrite="false">
</Context>
参考
https://www.thinbug.com/q/15340218
本文分析了一个在Mac环境下,使用JDK1.8和Tomcat7时遇到的问题:由于Context设置为只读,导致在关闭应用时触发了javax.naming.OperationNotSupportedException。解决方案是在webapp/META-INF/context.xml中将jndiExceptionOnFailedWrite属性设为false,从而避免此错误。参考链接提供了详细的解决步骤。

2万+

被折叠的 条评论
为什么被折叠?



