我正在使用部署在JBoss 7.1.1上的DeltaSpike 1.7.1和CDI 1.0(Weld 1.1.5).这是一个遗留项目,我无法改变我们正在使用的技术.
当我部署多个WAR文件(我知道CDI有问题只发生/曾与一个EAR内的多个WAR文件有问题,但我没有找到一个EAR文件之外的JBOSS实例的多个WAR文件什么.
请注意,每次部署项目时都不会发生问题,通常情况下,当我要求Jenkins同时构建和部署多个项目时,我会收到以下错误消息:
WELD-001318 Cannot resolve an ambiguous dependency between [Managed Bean [class org.apache.deltaspike.core.impl.scope.window.DefaultWindowContextQuotaHandler] with qualifiers [@Any @Default], Managed Bean [class org.apache.deltaspike.jsf.impl.scope.window.JsfWindowContextQuotaHandler] with qualifiers [@Any @Default]]
我试图摆脱DeltaSpike,但项目严重依赖于@ViewAccessScoped注释,这将浪费大量时间来改变它.
我使用 Deltaspike CdiControl 为我的单元测试启动 CDI 容器。这工作正常,但有一个问题:如果我对 Maven Web 应用程序使用这种方法,beans.xml最终会在src/main/webapp/WEB-INF. 这意味着META-INF在单元测试期间它不在目标文件夹中的目录中。
由于单元测试本身不是webappJava SE 运行,因此该WEB-INF目录被忽略。我可以通过添加第二解决这个问题beans.xml,以META-INF和/或复制现有beans.xml向右文件夹单元测试。但这意味着我必须手动将其从战争中排除,因此它看起来有点不切实际。
把一个beans.xml成src/test/resources/META-INF不起作用,因为它仅允许在CDI组件target/test-classes被检测到。
这似乎是一个普遍的问题,我认为之前一定有人遇到过这个问题?或者每个人都有一个单独的 Maven 模块用于组件和/或单元测试?
嗯我从一个jsf webapplication开始,将使用CDI,但在焊接和焊接之间有点混淆,或者是焊料使用焊接引擎盖下的焊接.
Weld之前还被称为WebBeans吗?
与Apache MyFaces一样,它清楚CDI实现是CODI
我正在使用DeltaSpike数据存储库来处理使用JTA数据源的项目中的daos.我最近迁移到Wildfly 8.2,我遇到了一些问题:
作为DeltaSpike文档中描述的那样,我配置BeanManagedUserTransactionStrategy为我TransactionStrategy,书写globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy =org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy成/META-INF/apache-deltaspike.properties
使用此配置,考虑a Role,a @Repository RoleDao,TestStatelessClass注入RoleDao并打印一行的a,以及注入服务的resteasy API:
Role.java
@Entity
public class Role implements Serializable {
@Id
private Long id;
@Column(unique=true, nullable=false)
private String role;
// ...
}
Run Code Online (Sandbox Code Playgroud)
RoleDao.java
import org.apache.deltaspike.data.api.EntityRepository;
import org.apache.deltaspike.data.api.Repository;
@Repository
@Dependent
public interface RoleDao extends EntityRepository<Role, Long> {
Role findById(long id);
}
Run Code Online (Sandbox Code Playgroud)
TestStatelessClass.java
@LocalBean
@Stateless
public class TestStatelessClass {
@Inject RoleDao roleDao;
public TestStatelessClass() {
}
public void execute() {
System.out.println("Stateless: Count roles: " + roleDao.count());
}
} …Run Code Online (Sandbox Code Playgroud) 在Wildfly 11 中部署我的test.war期间,我看到了几个警告:
09:45:32,714 WARN [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.core.impl.throttling.ThrottledInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-core-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,714 WARN [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.core.impl.lock.LockedInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-core-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,715 WARN [org.jboss.weld.Validator] (MSC service thread 1-4) …Run Code Online (Sandbox Code Playgroud) deltaspike ×5
cdi ×4
java ×2
weld ×2
wildfly ×2
jboss-weld ×1
jboss7.x ×1
jta ×1
maven ×1
seam ×1