Я создал модуль jboss для предоставления базового кода. Я хочу вывести некоторые данные, когда этот модуль будет развернут в jboss. Я могу добиться этого, создав простой класс, например:Может ли модуль JBoss зависеть от баночки
@Singleton
@Startup
public MyClass {
@PostConstruct
public void init() {
System.out.println("I am in here");
}
}
Вышеуказанный метод-инициатор работает и запускается правильно. Обратите внимание, что вышеприведенный модуль представляет собой банку.
Однако, когда я извлекаю вышеуказанный код в свой собственный проект и добавляю скомпилированную банку в качестве зависимости от того же модуля, код никогда не выполняется. И наоборот, если я добавлю его для развертывания в войну, он работает так, как ожидалось. Maven зависимость т.е.
<dependency>
<groupId>com.myModuleCommon</groupId>
<artifactId>moduleCommon</artifactId>
<version>1.0.0</version>
</dependency>
Я посмотрел на документации here и изучил этот StackOverflow question Тхо Я не уверен, если это является причиной, я не могу иметь модуль банка зависит от другого кувшина.
Мой вопрос тогда в том, почему мой извлеченный код не запускается во время запуска (т.е. выше), когда он используется как зависимость для модуля, но работает как внутренний класс, так и как зависимость в развертываемой войне?
i.e В моем образце файла войны я могу видеть извлеченную зависимость в WEB-INF/lib. Однако в моем модуле jar в файле манифеста нет ничего, что означает, что эта зависимость используется. Возможно, это часть проблемы, где может быть альтернативный способ указать зависимость в модуле.
Что это значит "используемый в качестве внешнего банку"? EJB будет работать только при развертывании в среде, поддерживающей EJB. Который является частью войны или уха в контейнере JEE. EDIT: о, подождите, он просто щелкнул. Вы имеете в виду, если вы упакуете его в отдельную банку и поставьте на войну, это не сработает. Но когда он развертывается как класс в WEB-INF/classes, он работает – Gimby
@Gimby справа, поэтому, если я извлечу код aboce в отдельный проект и добавлю его как зависимость в моем модуле, он не будет выполнен. Однако, если я сохраню его как класс в коде модуля, он работает. – angryip
Когда вы упаковываете в отдельную банку, есть ли баннер, фактически присутствующий в WEB-INF/lib при развертывании на сервере, и это ваш класс на самом деле внутри банки? (простейший ответ за неработающие вещи - это вещи, которые фактически не существуют физически). – Gimby