Java JEE:无法设置<;豆>;字段<;服务>&书信电报;豆>;至<;豆>$代理$
我对JEE宇宙比较陌生,所以请容忍我。Java JEE:无法设置<;豆>;字段<;服务>&书信电报;豆>;至<;豆>$代理$,java,jakarta-ee,ejb,wildfly,cdi,Java,Jakarta Ee,Ejb,Wildfly,Cdi,我对JEE宇宙比较陌生,所以请容忍我。 我无法理解本地wildfly(10.1.0版)服务器引发的异常 例外情况说明: 无法将.beans.ApplicationBean字段.service.rest.ApplicationService.ApplicationBean设置为.beans.ApplicationBean$Proxy$\u$\ uWeld$EnterpriseProxy$ 应用服务器上的实际部署成功,但调用REST调用会生成所述异常。 奇怪的部分是:如果我第二次部署同一个包,调用的
我无法理解本地wildfly(10.1.0版)服务器引发的异常 例外情况说明: 无法将.beans.ApplicationBean字段.service.rest.ApplicationService.ApplicationBean设置为.beans.ApplicationBean$Proxy$\u$\ uWeld$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 ...
}
我在CDI/EJB中使用注释的原因如下:
,因为我需要DAO类中的事务(为了完整起见,DAO类列在下面)@Stateless
,因为我试图注入特定的实现类,而没有接口@LocalBean
.daos.ApplicationDao
@Stateless
@LocalBean
public class ApplicationDao {
@PersistenceContext
private EntityManager em;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
... method ...
}
我不确定它是否与此有关,但ApplicationService类位于与bean和dao不同的模块中。最后,它们一起形成一个ear文件,其中共享模块(bean和DAO)是EJB模块,服务是web应用程序
我将非常感谢一些真知灼见-干杯 这可能是几件事,但这里是我最好的猜测: 尝试将@Inject更改为@EJB
@Stateless
@LocalBean
public class ApplicationBean {
@EJB
private ApplicationDao applicationDao;
... some methods ...
}
.service.rest.ApplicationService
@Path("/applications")
@Stateless
@LocalBean
public class ApplicationService {
@EJB
private ApplicationBean applicationBean;
... methods which use the applicationBean field ...
}
如果这解决了问题,那么问题很可能是包含该类的jar文件没有beans.xml文件,因此CDI无法获取该类。您完全正确。服务模块缺少beans.xml文件。出于某种原因,我认为如果只有一个模块有它就足够了,因为它们都打包在一个ear文件中。谢谢你证明我错了。