Как работать со статическими переменными в модуле jar Wildfly, используемом в нескольких военных приложениях - PullRequest
0 голосов
/ 04 марта 2019

Я хочу использовать библиотечный jar в нескольких WAR-приложениях, которые объединены в один EAR.Поэтому я добавил этот jar-файл как зависимость модуля в jboss-deploy-structure.xml EAR.

Проблема в том, что в библиотеке есть статические переменные (стандартный шаблон Singleton с POJO и кэшами), которые необходимобыть изолированным между приложениями.Поскольку библиотека включена как зависимость модуля для каждого военного приложения, используется один и тот же экземпляр класса (и, следовательно, одна и та же статическая переменная).

EAR structure:
|-- META-INF
|   |-- jboss-deployment-structure.xml
|-- WAR A
|-- WAR B
|-- WAR ...

Событие с указанием ссылки на модуль в разделе суб-развертывания jboss-deploy-structure.xml Я полагаю, что вместо WarClassloader все еще используется ModuleClassloader:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            ...
        </dependencies>
    </deployment>
    <sub-deployment name="TEST001_Wildfly.war">
        <dependencies>
            <module name="com.shared.lib" />
        </dependencies>
    </sub-deployment>
    <sub-deployment name="TEST002_Wildfly.war">
        <dependencies>
            <module name="com.shared.lib" />
        </dependencies>
    </sub-deployment>
</jboss-deployment-structure>

Как можно ссылаться на jar модуля общей библиотеки или использовать ее в любом приложении войны, чтобы экземпляр класса со статическими переменнымиНЕ поделились между ними?

...