`

Tomcat配置文件catalina.policy 相关

阅读更多

近日维护的老旧系统出现一个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配置文件的资料,求高手解答告知,也希望对其他小伙伴有所帮助。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics