欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tomcat配置文件catalina.policy 相关

程序员文章站 2022-03-05 17:01:36
...

近日维护的老旧系统出现一个bug,

正常的文件上传无法进行   文件上传下载协议为smb协议

该系统上传方式比较老旧,在JSP页面上引用applet上传,即调用某一个jar中的class类

 

主要代码如下:

<object code="AB.class" width="100" height="100">

<param name="java_archive" value="CCC.jar">

<param name="files" value="">

<param name="files" value="">

<param name="files" value="">

</obeject>

 

这个jar包与Jsp页面放置在同一文件夹下

由于之前做过一个应用服务的迁移,在AB类中需要修改对应的文档服务器信息地址

由于没有源码,需要将该jar包进行反编译修改类文件,然后再重新编译再打包替换原来的jar

 

这个jar中很多class文件都是低版本jdk,而目前要修改的class文件已经到jdk1.6  (之前一直纠结与是否是由于修改该AB文件后由于jdk版本编译问题,而出现后续很多问题)

由于要修改jar中的CLASS文件比较困难,采用的方法供参考:

 

首先通过反编译工具 JAD 或者jd-gui 将对应的要修改的类反编译出来,(整个jar反编译的时候发现很多错,修改起来非常麻烦)报错源码信息

然后将该CCC.jar通过winrar软件删除该AB.class文件

然后在myeclipse里面新建一个工程,创建同名AB类,将反编译的信息复制进去,在工程中引用CCC.jar

修改对应的源码AB.java

然后通过 FAT jar(打jar包的插件)将该工程打jar包为同名CCC.jar

 

 

成功打出jar包以后,发现在运行时会出现各种错误,

java.security.AccessControlException : access denied (java.util.PropertyPermission *.* read)错误

java applet  java.lang.System.property (Unknown Source)

错误

一直查,一直被各自在jre修改配置文件,在服务器端添加数字签名等引导,查了很久都没有结果

 

突然想到我之前做过应用服务器迁移,于是比对老服务器上和新服务器 对应tomcat的配置是否一致,

(虽然版本一样,但新服务的tomcat是自己装的,老服务器上的tomcat是前面很多人弄过的)

发现在tomcat/conf/catalina.policy文件有不一样的地方,老服务器上 有一条 配置

在grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar"{

 

}

新增 permission java.security.AllPermission;  

添加这一条信息后,问题解决。

目测应该是放开了到了最高权限了。

具体的原因可能需要再研究一下tomcat配置文件的资料,求高手解答告知,也希望对其他小伙伴有所帮助。