cdi 相关问题

Java平台企业版(Java EE)5将依赖注入(DI)与使用约定优化配置到Enterprise JavaBeans(EJB)3.0。除了已有的@EJB注释之外,Java EE 6还引入了灵活且功能强大的@Inject依赖注入模型(JSR-330和JSR-299)。

CDI 的实例或 Guices Provider 的 Spring 等价物是什么

在 CDI 中,您可以定义一个对象,该对象将为您提供某种类型的项目,使用: @注入 实例 myObjectInstance; //... MyObject myObjectInstance.get(); 同样,在 Guice 中您可以...

回答 2 投票 0

CDI.current().select().get() 和 BeanManager.getReference() 功能等效吗?

在 JEE/CDI 的上下文中,当我需要从方法中静态检索 CDI 托管 bean 时,我发现自己通常使用 CDI 静态函数。 例如: MyBean myBean = CDI.current().sel...

回答 2 投票 0

我的自定义拦截器未在 Quarkus 中执行

我正在 Quarkus 中编写一个小应用程序。我主要使用 quarkus-hibernate-reactive-rest-data-panache 扩展。一件事是它不支持查询参数的部分搜索。所以对于例如...

回答 1 投票 0

集成测试:无法创建 org.jboss.arquillian.test.impl.EventTestRunnerAdaptor 类的新实例

我想针对数据库创建一个集成测试,然后在 wildfly/arquillian 环境中清理它。但是当我尝试执行测试时,我收到 Could not create new instance of c...

回答 1 投票 0

Helidon MP EntityManager 始终返回 NULL

尝试在 Helidon MicroProfile 项目中使用 EntityManager 时遇到 NullPointerException。发生异常是因为当我尝试创建查询时 EntityManager 为空。 ...

回答 1 投票 0

如何使用 Liquibase CDI 注入 searchPath 参数

我尝试在使用 Liquibase CDI 时注入 searchPath 参数,但下面的方法似乎都不起作用。由于情况超出我的控制范围,这是我可以修改我的

回答 1 投票 0

java.lang.ClassNotFoundException:jakarta.enterprise.inject.spi.el.ELAwareBeanManager

我目前正在将项目从 Java 11 迁移到 Java 17,从 Spring 5 迁移到 Spring 6,以及从 RichFaces 迁移到 PrimeFaces 14(雅加达)。进行必要的更改后,我遇到以下情况

回答 1 投票 0

在 WildFly 21 上无法使用 JSF 2.2 访问 CDI 支持 Bean

我一直在按照本教程在 Windows 10 上的 Wildfly-21.0 服务器上使用 JAVA-14 和 Maven 在 Eclipse 版本 2020-09 (4.17.0) 上设置 JSF。完成页面上的说明后,我可以

回答 2 投票 0

如何在Tomcat上安装和使用CDI?

我正在创建我的第一个项目 Java EE 7,但我遇到了麻烦。感谢任何帮助。 雄猫7.0.34 JSF 2.2 Primefaces 3.5 javaee-api-7.0.jar 当应用程序启动时,Tomcat 日志显示

回答 2 投票 0

Spring Boot 中的 CDI 装饰器支持

我正在尝试在 Spring Boot 应用程序中使用 CDI 装饰器。 这是 Spring beans 的 CDI 装饰器一文,描述了其目的及其实现方式。这篇文章很漂亮...

回答 1 投票 0

使用CDI Decorator装饰托管Validator时出错

我有一个无状态的 Java EE 7 WebService,并且想要使用验证框架来验证传入的数据。这一切都很好。然后我想将任何 ConstraintViolationException 转换为 som...

回答 1 投票 0

将 Bean 注入 Hibernate BeforeExecutionGenerator

我使用 Hibernate 的 BeforeExecutionGenerator 和 IdGeneratorType 注释来为我的实体生成自定义 id。 我怎样才能将一些bean(或配置属性)注入到我的实现中......

回答 1 投票 0

@Named 注解的目的是什么

在Java EE 7中,这里@Named注解的目的和用途是什么?即使没有它,容器也应该能够在运行时发现这个 bean,对吗? 另外,@Singleton 做什么?如果

回答 4 投票 0

夸库斯测试。重置bean状态

我有一个有状态 bean 和 @QuarkusTest 下的一些不同的测试用例。但每个测试用例都需要干净的 bean 状态才能正确执行(测试不应相互依赖)。 目前...

回答 1 投票 0

具有 CDI 注入的全局 JSF 异常处理程序

我目前能够使用自定义异常处理程序捕获所有异常,如下所述: JSF 2 全局异常处理,导航到错误页面未发生 我正在做广泛的你...

回答 3 投票 0

如何在 Jakarta EE 项目中为自定义注释的拦截器提供运行时参数?

我正在开发一个 Jakarta EE 项目,其中有一个自定义注释和一个关联的拦截器。该注释用于执行一些逻辑,并且它作为独立的项目按预期工作。然而,...

回答 1 投票 0

@Inject 使用 Java SE 在 Weld 3 中传递 null

我在普通的 Java SE 8 程序中使用 CDI 2.0 和 Weld 3.0.0 Final(类路径中完整的weld-se-shaded.jar),如下所示。它有什么问题或者我错过了什么,因为@Inject ...

回答 2 投票 0

运行构建器“CDI(上下文和依赖注入)时出错

我使用 Eclipse 和 JBoss Tools 为 Apache TomEE 8.0.16 服务器开发基于 JSF 2.3 和 JPA 2.2 的 Web 应用程序,并使用 Hibernate 作为 JPA 实现。我的项目有很多下拉菜单......

回答 1 投票 0

如何从 arquillian.xml 中通过限定符选择容器?

我想在我的 arquillian.xml 中有不同的容器配置,并在我的测试中选择它们。但我无法加载除默认容器之外的任何容器。 我想在我的 arquillian.xml 中有不同的容器配置,并在我的测试中选择它们。但我无法加载除默认容器之外的任何容器。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian" xsi:schemaLocation="http://jboss.org/schema/arquillian http://www.jboss.org/schema/arquillian/arquillian_1_0.xsd"> <container qualifier="weld" default="false"> </container> </arquillian> 测试用例: @Deployment(name="depl1") @TargetsContainer("weld") public static JavaArchive createTestArchive() throws UnsupportedEncodingException { return ShrinkWrap .create(JavaArchive.class, "test.jar") .addClasses(SomeOtherCdiService.class) .addAsManifestResource(new ByteArrayAsset(beansXmlContent.getBytes("utf-8")), ArchivePaths.create("beans.xml")); } @Test @OperateOnDeployment("depl1") public void shouldBeAbleToInjectInject() { assertNotNull(someOtherCdiService); } 但是测试没有开始,因为 Arquilian 找不到容器 org.jboss.arquillian.container.test.impl.client.deployment.ValidationException: DeploymentScenario 包含与任何定义的容器不匹配的目标 在注册表中。焊接。可能的原因是: 没有可部署的容器 在类路径上找到或者您已经定义了 @org.jboss.arquillian.container.test.api.Deployment 带有 @org.jboss.arquillian.container.test.api.TargetsContainer 值 与任何找到/配置的容器不匹配(请参阅 arquillian.xml 容器@限定符) 我查看了源代码,发现 Aquilian 只找到了 _DEFAULT_ 容器。 当我从部署者方法中删除 @TargetsContainer("weld") 时,测试有效。所以我觉得一般测试还是可以的。 如果我将容器配置修改为 default="true" (<container qualifier="weld" default="ture">) 那么测试也会工作,所以我认为配置文件已加载。 有人知道出了什么问题吗? 详情 完整的堆栈跟踪: org.jboss.arquillian.container.test.impl.client.deployment.ValidationException: DeploymentScenario contains targets not matching any defined Container in the registry. weld. Possible causes are: No Deployable Container found on Classpath or your have defined a @org.jboss.arquillian.container.test.api.Deployment with a @org.jboss.arquillian.container.test.api.TargetsContainer value that does not match any found/configured Containers (see arquillian.xml container@qualifier) at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.validate(DeploymentGenerator.java:102) at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:100) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80) at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:179) at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:311) at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46) at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:196) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:144) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) POM.XML 依赖项 <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>1.0-SP4</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <scope>provided</scope> <version>1.0</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <scope>provided</scope> <version>1.0.0.GA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.0.0.GA</version> <scope>provided</scope> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <!-- ejb --> <dependency> <groupId>javax.ejb</groupId> <artifactId>ejb-api</artifactId> <version>3.0</version> <scope>provided</scope> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>${hamcrest.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>${hamcrest.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.junit</groupId> <artifactId>arquillian-junit-container</artifactId> <version>1.0.0.CR6</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-weld-se-embedded-1.1</artifactId> <version>1.0.0.CR3</version> <!-- works with arquillian core 1.0.0.CR6 --> <scope>test</scope> </dependency> <!-- do not use org.jboss.weld.se:weld-se because is contains the CODE of slf4j in an not compatible version so we need the parts of weld-se seperate: weld-se-core, weld-core, org.javassist, slf4j-jdk14 https://issues.jboss.org/browse/WELD-903 --> <dependency> <groupId>org.jboss.weld.se</groupId> <artifactId>weld-se-core</artifactId> <version>1.1.5.Final</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-core</artifactId> <version>1.1.5.Final</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> <scope>test</scope> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.14.0-GA</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.6.1</version> <scope>test</scope> </dependency> 如果您通过 Surefire 配置将 arquillian.launch 系统属性从 Maven 设置为您想要启动的容器,那么它将起作用。您可以在 https://github.com/seam/solder/blob/develop/testsuite/pom.xml 中查看我们在 Solder 中所做的工作 您可以在此处看到您请求的解决方案: https://docs.jboss.org/author/display/ARQ/Container%20config%20runtime%20selection.html 将您的 Maven 配置文件与 arquillian-launch 属性链接,以从 arquillian.xml 中选择容器

回答 2 投票 0

使旧的 httpssession 失效会删除当前 httpssession 的上下文

我的应用程序使用 @ViewScoped LoginBean 处理登录,该 LoginBean 注入了一个存储用户信息和当前 HttpSession 的 @SessionScoped SessionBean。 这个应用程序允许用户N单独

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.