美文网首页
java web中使用jython导致在Tomcat中卸载项目失

java web中使用jython导致在Tomcat中卸载项目失

作者: 田文健 | 来源:发表于2018-11-12 16:49 被阅读0次

    最近一个java web项目中使用到了python,使用jython库来执行python脚本。jython会把python编译成class文件供java虚拟机执行。项目编写好之后放到Tomcat中执行时OK的,但是在Tomcat的管理界面undeploye这个项目时发现会失败,查看webapps目录发现jython-standalone.jar无法删除。
    后来看了Tomcat的类加载器机制,Tomcat会为每个项目都创建一个单独的类加载器实例,然后想到可能加载python的类加载器不是项目的类加载器而是Tomcat的公用类加载器或者jVM的类加载器,然后更改设置:
    PySystemState sys = Py.getSystemState();
    sys.setClassLoader(this.getClass().getClassLoader());
    sys.path.add(pythonPath + "");
    在初始化python的时候,设置其类加载器为本项目class的类加载器,经过测试代码正常执行,项目也可以正常从Tomcat的管理界面中卸载。

    相关文章

      网友评论

          本文标题:java web中使用jython导致在Tomcat中卸载项目失

          本文链接:https://www.haomeiwen.com/subject/ngucfqtx.html