在托管bean中,@PostConstruct
在常规Java对象构造函数之后调用.
我为什么要使用@PostConstruct
bean初始化,而不是常规构造函数本身?
我发现了这个问题:@ Inject和@EJB之间的区别是什么,但我没有更明智.我以前没有完成Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么?
@EJB和旧的注射方式?在使用@Inject时使用此批注时EJB容器是否完成注入使用新的CDI框架?这是不同的,如果是这种情况,我应该使用@Inject而不是@EJB吗?
当尝试在EL中引用托管bean时#{bean.entity.property}
,有时会javax.el.PropertyNotFoundException: Target Unreachable
抛出异常,通常是在设置bean属性时,或者要调用bean操作时.
似乎有五种不同的消息:
这些都意味着什么?它们是如何引起的,它们应该如何解决?
我正在制作一个基于Java EE的产品,我正在使用GlassFish 3和EJB 3.1.
我的应用程序有会话bean,调度程序和使用Web服务.我最近了解了Apache TomEE,它支持上下文和依赖注入(CDI).GlassFish容器也支持CDI.
我可以替换会话bean,我不需要任何CDI也没有提供的功能吗?如果那样的话,我能得到什么好处?
我觉得Java EE 6规范有点乱.有几组注释.
我们有javax.ejb
类似于@Stateful
和@Stateless
创建EJB的注释.
还有一个@javax.annotation.ManagedBean
用于创建托管bean.
javax.enterprise.context
喜欢@SessionScoped
和注释中有注释@RequestScoped
.
更重要的是也有@ManagedBean
和@SessionScoped
/ @RequestScoped
在注释javax.faces.bean
包.
为了使事件更复杂,有一个javax.inject
带@Named
注释的包.
有人可以描述一下他们之间的关系吗?
我在哪里可以使用@EJB
,@Inject
或@ManagedPropery
注入其他豆类?
我刚开始阅读Core JavaServer Faces,第3版.他们这样说(强调我的):
对于可以在JSF页面中使用的bean,有两种不同的机制,CDI bean和JSF托管bean,这是一个历史事故.我们建议您使用CDI bean,除非您的应用程序必须在像Tomcat这样的普通servlet运行器上运行.
为什么?他们没有提供任何理由.我一直在使用@ManagedBean
在GlassFish 3上运行的原型应用程序中的所有bean,我还没有发现任何问题.我不介意迁移@ManagedBean
到@Named
,但我想知道为什么我应该打扰.
我很难理解两者如何相互作用以及它们之间的界限在哪里.它们是否重叠?他们之间有冗余吗?
我知道有两个注释都有关联,但我无法通过简短的描述找到两者的完整列表.不确定这是否有助于弄清楚它们之间的区别或重叠的位置.
真的只是困惑.我(我认为)合理地理解EJB,我想我很难理解CDI带来的确切内容以及它如何取代或增强EJB已经提供的内容.
在CDI中有@ApplicationScoped
和(javax.inject
)@Singleton
伪范围.他们之间有什么区别?除了@ApplicationScoped
代理的事实,而@Singleton
不是.
我可以把我的@Singleton
豆子改成@ApplicationScoped
吗?可@ApplicationScoped
豆有两个(或更多)的实例?
我在java Web表单中编写了一个简单的程序但是我收到以下错误:
WELD-000072声明钝化范围的管理bean必须具有钝化功能.Bean:
BeanPakage.DemoBeans
带有限定符[@Any
@Default
@Named
]的托管Bean [类]
谁能告诉我这个错误来自哪里?
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named("DemoBeans")
@SessionScoped
public class DemoBeans {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud) 我们计划从头开始编写Web应用程序,已经决定使用符合Java EE 6标准的最新版Glassfish,因此我们正在分析是否可以使用CDI而不是Spring.
我们可以说CDI可以替代Spring吗?
cdi ×10
java ×6
java-ee ×4
java-ee-6 ×3
ejb ×2
jsf ×2
apache-tomee ×1
ejb-3.0 ×1
el ×1
glassfish-3 ×1
jboss-weld ×1
jsf-2 ×1
jsr299 ×1
managed-bean ×1
scope ×1
spring ×1