Я относительно новичок в вселенной JEE, поэтому, пожалуйста, несите меня.
Я не могу получить свою голову вокруг исключения, которое бросает мой локальный wildfly (версия 10.1.0) сервер.
за исключением состояния:
Не удается установить пакет < > .beans.ApplicationBean поле < пакет > .service.rest.ApplicationService.applicationBean в < пакет > .beans.ApplicationBean $ Proxy $ _ $$ _Weld $ EnterpriseProxy $
Фактическое развертывание на сервере приложений успешно завершено, но вызов REST вызывает это исключение.
Странная часть: Если я разворачиваю тот же пакет во второй раз, вызванный вызов REST не генерирует исключение, и приложение работает по назначению.
Классы в вопросе являются:
< пакет > .beans.ApplicationBean
@Stateless
@LocalBean
public class ApplicationBean {
@Inject
private ApplicationDao applicationDao;
... some methods ...
}
< пакет > .service.rest.ApplicationService
@Path("/applications")
@Stateless
@LocalBean
public class ApplicationService {
@Inject
private ApplicationBean applicationBean;
... methods which use the applicationBean field ...
}
Мои рассуждения позади моего использования аннотаций в отношении КДИ/EJB являются:
@Stateless
потому что мне нужно транзакции в моем классе DAO (класс DAO приведена ниже по соображениям полноты)@LocalBean
потому что я пытаюсь внедрить конкретные классы реализации и никаких интерфейсов
< пакет > .daos.ApplicationDao
@Stateless
@LocalBean
public class ApplicationDao {
@PersistenceContext
private EntityManager em;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
... method ...
}
Я не уверен, если он не имеет ничего общего с ним, но классом ApplicationService находится в другом модуле, чем боб и дао. В итоге вместе они образуют файл уха, где общий модуль (bean и daos) - это ejbModule, а служба - это веб-приложение.
Я был бы очень признателен за понимание - ура!
Вы абсолютно правы. В сервисном модуле отсутствовал файл beans.xml. По какой-то причине я подумал, что это будет достаточным, если бы у него был только один модуль, поскольку все они упакованы в один файл уха. Спасибо, что доказали, что я ошибаюсь. – olada