Перенос существующего проекта в maven и wildfly, и ему пришлось перемещать некоторые файлы, создавая следующую ситуацию.
- core.jar
- ejb1.jar
- ejb2.jar
. При этом ejb-jar.xml для ejb1.jar имеет следующее:
<ejb-jar>
<enterprise-beans>
<session id="Value">
..
<home>path.to.ejb1Home</home>
<remote>path.to.ejb1</remote>
...
Классы, на которые ссылаются теги home и remote, переместились внутрьcore.jar
Между тем ejb2.jar зависит от других частей core.jar.
То, что выглядело как простое решение, это создать глобальный модуль и поместить в него core.jar, создавсоответствующий файл module.xml и запись в standalone.sh, чтобы сделать его доступным для всех развертываний.
module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="path.to">
<resources>
<resource-root path="core-1.0.jar"/>
</resources>
<dependencies>
</dependencies>
</module>
При этой настройке ejb2.jar развертывается, как ожидается, но ejb1.jar выдает следующую ошибку:
Caused by: java.lang.NoClassDefFoundError: Failed to link path.to.ejb1
(Module "path.to" from local module loader @4c40b76e (finder: local
module finder @2ea6137 (roots: /opt/wildfly/modules,
/opt/wildfly/modules/system/layers/base))): javax/ejb/EJBObject