wrs*_*der 8 ejb cdi java-ee-6 ejb-3.1
我有一个@RequestScoped CDI bean,我想把它变成一个EJB来获取声明式事务.(我在EJB 3.1,Java EE 6上)
目前,我在子例程之间传递状态,假设实例仅用于单个请求.如果我@Stateless现在补充说假设会改变.
例如,我想做类似的事情
@Stateless
@Named
@RequestScoped
public class Foo {
private String var1; // can't use instance vars in @Stateless?
private String var2;
public void transactionForRequest() {
var1 = value;
var2 = value;
....
subroutine();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为以上不起作用 - 这是正确的吗?
我正在考虑两种选择:
EJBContext.getContextDatamap替换实例变量.哪个更好?还有其他一些我没想到的选择吗?(除了等待Java EE 7或切换到Spring.:-))
Dav*_*ins 12
虽然@Stateless,@Singleton并且@MessageDriven可以通过注入范围引用@Inject,但它们不能是 @RequestScoped任何其他范围.只有@Stateful模型足够灵活以支持范围.换句话说,你可以注释@Statefulbean类本身@RequestScoped,@SessionScoped等等.
简单来说@Stateless,@Singleton已经修复了"范围". @Singleton基本上是@ApplicationScoped和@Stateless或许会像一些虚构的范围内@InvocationScoped,如果存在.@MessageDrivenbean 的生命周期完全取决于驱动它的连接器,因此也不允许具有用户定义的范围.
| 归档时间: |
|
| 查看次数: |
5708 次 |
| 最近记录: |