Java Tomcat(在RHEL/CentOS上)和ProtectionDomain
我正在将WAR从Ant构建迁移到Maven构建。在Ant构建中,我们的代码被打包到一个JAR中,该JAR被放置在Java Tomcat(在RHEL/CentOS上)和ProtectionDomain,java,tomcat,tomcat7,Java,Tomcat,Tomcat7,我正在将WAR从Ant构建迁移到Maven构建。在Ant构建中,我们的代码被打包到一个JAR中,该JAR被放置在WEB-INF/lib中。使用Maven,我们将使用标准行为将类文件编译成WEB-INF/classes 我们有一个类,它试图确定(反射引用的)类是否来自我们的WAR。这是通过查看类的ProtectionDomain的CodeSource完成的: aClass.getProtectionDomain().getCodeSource().getLocation().getPath()
WEB-INF/lib
中。使用Maven,我们将使用标准行为将类文件编译成WEB-INF/classes
我们有一个类,它试图确定(反射引用的)类是否来自我们的WAR。这是通过查看类的ProtectionDomain
的CodeSource
完成的:
aClass.getProtectionDomain().getCodeSource().getLocation().getPath()
当类位于JAR文件中时,这将返回包含JAR文件的位置。在我的Windows开发机器上(使用Oracle JDK 8),当类位于WEB-INF/classes
中时,这将返回分解WAR结构中的WEB-INF/classes
目录的路径
但是,在我们的生产服务器上(RHEL 7/CentOS 7、Tomcat 7.0.76、Open JDK 8),在后一种情况下,它返回.class
文件本身的完整路径。也就是说,似乎每个加载的类文件都有一个单独的ProtectionDomain
我试图理解在这种情况下是什么驱动了不同的ProtectionDomain
s的创建。我无法确定我的Windows开发环境和RHEL生产环境之间有什么不同。有人有什么见解吗