我有以下代码来管理两种存储库。两个存储库类都继承一个接口,以允许对其资源进行重新初始化。
public interface CachingRepository
{
public void invalidateCache();
}
全局的,应用程序范围的存储库:
@Named("globalRepo")
@ApplicationScoped
public class GlobalRepository implements CachingRepository
{
private List<Category> categories;
...
@Override
public void invalidateCache()
{
categories = null;
}
...
}
每个用户的会话范围的存储库:
@Named("userRepo")
@SessionScoped
//@Stateful // <- NOTE HERE
public class UserRepository implements CachingRepository, Serializable
{
private List<MyFile> 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
(现在)确实不需要使用。
问 :
UserRepository
变种应该已经确定哪一个类实例化,不应该吗?这是什么逻辑?@Stateful
EJB注释在这里会产生如此严重的影响?为什么从根本上迫使我使用CachingRepository
var声明中的接口?注意 ,我使用的是Seam 3 Faces,使它@ViewScoped
成为CDI范围内的bean,所以眼前的问题可能仍然 仅限 于
CDI 。
我有以下代码来管理两种存储库。这两个存储库类都继承了一个接口,以允许重新初始化它们的资源。 全球应用范围回购: 每个用户,会话范围的回购: 将此(不带)注入上下文时 但是,当向UserRepository类添加时,部署失败,例外情况如下: 添加CDI bean的名称,如 会导致相同的异常。唯一与一起工作的是使用var声明中的接口: 然而,我可能需要子类功能,所以使用并不是真正需要的(目前)。 问题
我有豆子如下所示。 我得到的错误就像 我做错什么了吗。
在JBoss上部署我的Java应用程序时,我遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以我的问题是: 10:05:34,838错误[org.jboss.MSC.service.fail](MSC服务线程1-6)MSC00001:无法启动服务jboss.deployment.unit。“MDK-Exchange-1.1.0.war”。WeldService:org.jboss
我有下面的代码来管理两种存储库。两个存储库类都继承了一个接口,以允许重新初始化它们的资源。 将此(不带)注入上下文时 它起作用了。但是,将添加到类时,部署失败,并出现一个异常: 添加CDI bean的名称,如 结果为相同的异常。与配合使用的唯一方法是使用var声明中的接口: 但是,我在这里可能需要子类功能,因此(目前)并不希望使用。 问: null
我在JBoss上部署我的Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题: ... 在JBoss 7.1上部署时会出现以下错误: 10:05:34838错误[org.jboss.msc.service.fail](msc服务线程1-6)MSC00001:无法启动服务jboss。部署。单元“mdk-exchange-1.1.0.战争”。WeldSer
在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时似乎没有这个问题 org.jboss.weld.exceptions.DeploymentException:WELD-001408类型[CarPolicyServiceWithContext]的依赖项不满足,其限定符为[@default],位于注入点[[field]@Inject com.athlon.