Java Tomcat(在RHEL/CentOS上)和ProtectionDomain

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()

我正在将WAR从Ant构建迁移到Maven构建。在Ant构建中,我们的代码被打包到一个JAR中,该JAR被放置在
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生产环境之间有什么不同。有人有什么见解吗