Tomcat (на RHEL / CentOS) и ProtectionDomain - PullRequest
1 голос
/ 07 ноября 2019

Я в процессе переноса WAR из сборки Ant в сборку Maven. В сборке Ant наш код был упакован в 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, это возвращает путь к каталогу WEB-INF/classes в разобранной структуре WAR.

Однако на наших производственных серверах (RHEL 7 / CentOS 7, Tomcat 7.0.76, Open JDK 8), в последнем случае он возвращает полный путь к самому файлу .class. Т.е. кажется, что для каждого файла класса загружается отдельный ProtectionDomain.

Я пытаюсь понять, что в данном случае приводит к созданию различных ProtectionDomain s. Я не смог определить, что отличается между моей средой разработки Windows и производственной средой RHEL. У кого-нибудь есть понимание?

...