Pep*_*dez 6 jsf ejb intellij-idea java-ee cdi
我正在学习Java EE 7.
我正在尝试将用户会话存储在@SessionScoped
Backing Bean中,但我的IDE告诉我我有一个错误,因为"无法将非可序列化类型的bean注入到钝化范围的bean中".
该@SessionScoped
豆:
import negocio.Autenticacion;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
@Named
@SessionScoped
public class UserSesion implements Serializable{
@Inject
private Autenticacion auth; // Error by IDE
}
Run Code Online (Sandbox Code Playgroud)
@Stateless EJB代码:
import modelo.Usuario;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.security.MessageDigest;
@Stateless
public class AutenticacionBean implements Autenticacion{
@PersistenceContext(unitName = "Banco-PU")
private EntityManager em;
...
Run Code Online (Sandbox Code Playgroud)
为什么我不能在辅助bean中注入EJB?
IDE:Intellij IDEA 14.1.4
Bal*_*usC 12
这是一个错误的错误.有问题的IDE显然不够智能,无法检测到它实际上是一个EJB,而不是一个"简单"的CDI(或JSF)托管bean.EJB始终是隐式可序列化的.
你有4个选择:
忽略它.它会完美运行.
鞠躬假错误,让EJB类Serializable
无论如何都要实现.
使用@javax.ejb.EJB
而不是@javax.inject.Inject
注入它.它也会注入EJB,但普通的IDE必须足够聪明,不要以这种方式抱怨序列化,因为IDE现在确切知道它实际上是EJB,而不是CDI托管bean.
将IDE升级到修复此问题的较新版本(如果有).自Java EE 7以来,使用@Inject
而不是@EJB
在EJB 上使用的能力是新的(尽管支持不太完整;例如,引用self in @Asynchronous
在使用时将不起作用@Inject
).如果仍然没有在最新的IDE版本中修复,即使它声称与Java EE 7兼容,也向他们报告错误.
归档时间: |
|
查看次数: |
1966 次 |
最近记录: |