【Exception】Caused by: javax.naming.OperationNotSupportedException: Context is read only

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案发现场

软件版本
OSMac 10.15.7
JDK1.8
tomcat7
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值