我找到了大量关于如何为 SSL、TLS 和类似功能启用 javax.net.debug 的文档,但即使在参考文档中,我也没有找到如何完全禁用它以编程方式覆盖以前的设置。我的确切问题是在 Tomcat 实例中,另一个应用程序执行以下指令:System.setProperty("javax.net.debug","all");这会导致catalina.out文件迅速增加他的维度并且不需要。我已经尝试使用相同的指令从我的 Java 代码中覆盖它,使用“ none ”、“ off ”和“ false ”值,但没有结果,仍然记录了大量 TLS 内容。例如,在我的应用程序中,我添加了以下指令:System.setProperty("javax.net.debug","none");但我仍然得到完整的日志。
3 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
问题是 tomcat 应用程序正在覆盖您从命令行提供的任何值,如果无法控制此代码正在做什么,您就无法真正从命令行参数覆盖它。虽然安全管理器能够阻止设置属性,但它只能通过抛出异常来实现,这可能会导致比它解决的问题更多的问题。
在这种情况下,您唯一的选择是在其他代码设置后,自己从代码中设置该值。
对于javax.net.debug
,该选项需要在Debug 类的静态静态初始化程序运行之前设置为其最终值sun.*
,也就是在第一条消息出现之前。这可以被任何不用作某些选项的值禁用(空字符串,或者不应该禁用它)。如果稍后设置,它将没有任何效果,事后也无法将其关闭(除了做一些糟糕的反射黑客以访问该类的内部,这只能在 java 8 及更早版本中实现)
添加回答
举报
0/150
提交
取消