java限定符_java – 注入点的限定符[@Default]类型[…]的不满足依赖关系(使用带有CDI的@Stateful EJB)...

我有以下代码来管理两种存储库.这两个存储库类都继承了一个接口,以便重新初始化其资源.

public interface CachingRepository

{

public void invalidateCache();

}

全球应用范围的回购:

@Named("globalRepo")

@ApplicationScoped

public class GlobalRepository implements CachingRepository

{

private List categories;

...

@Override

public void invalidateCache()

{

categories = null;

}

...

}

每个用户,会话范围的回购:

@Named("userRepo")

@SessionScoped

//@Stateful //

public class UserRepository implements CachingRepository,Serializable

{

private List files;

@Override

public void invalidateCache()

{

files = null;

}

...

}

当注入(不用@Stateful)到上下文中

@Named

@ViewScoped

public class MyHandler implements Serializable

{

@Inject

private UserRepository userRepo;

...

}

有用.但是,当将@Stateful添加到UserRepository类时,部署将失败,并显示以下异常:

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserRepository] with qualifiers [@Default] at injection point [[field] @Inject private de.company.project.pack.MyHandler.userRepo]

at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)

at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)

at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107)

at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127)

at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346)

at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331)

at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)

at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)

at org.jboss.as.weld.services.WeldService.start(WeldService.java:76)

... 5 more

添加CDI bean的名称

@Inject @Named("userRepo")

private UserRepository userRepo;

导致同样的例外.与@Stateful一起工作的唯一的事情是在var声明中使用接口:

@Inject @Named("userRepo")

private CachingRepository userRepo;

我可能需要子类功能,所以使用CachingRepository并不是真正需要的(目前).

Q记者:

>为什么这不按预期工作? UserRepository var应该已经识别要实例化的类,不应该吗?这是什么逻辑?

>为什么@Stateful EJB注释在这里有如此严重的影响?为什么它基本上迫使我在var声明中使用CachingRepository接口?

注意,我使用Seam 3 Faces使@ViewScoped成为一个CDI视图范围的bean,所以手头的问题可能仍然是CDI.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值