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 中您可以...
CDI.current().select().get() 和 BeanManager.getReference() 功能等效吗?
在 JEE/CDI 的上下文中,当我需要从方法中静态检索 CDI 托管 bean 时,我发现自己通常使用 CDI 静态函数。 例如: MyBean myBean = CDI.current().sel...
我正在 Quarkus 中编写一个小应用程序。我主要使用 quarkus-hibernate-reactive-rest-data-panache 扩展。一件事是它不支持查询参数的部分搜索。所以对于例如...
集成测试:无法创建 org.jboss.arquillian.test.impl.EventTestRunnerAdaptor 类的新实例
我想针对数据库创建一个集成测试,然后在 wildfly/arquillian 环境中清理它。但是当我尝试执行测试时,我收到 Could not create new instance of c...
Helidon MP EntityManager 始终返回 NULL
尝试在 Helidon MicroProfile 项目中使用 EntityManager 时遇到 NullPointerException。发生异常是因为当我尝试创建查询时 EntityManager 为空。 ...
如何使用 Liquibase CDI 注入 searchPath 参数
我尝试在使用 Liquibase CDI 时注入 searchPath 参数,但下面的方法似乎都不起作用。由于情况超出我的控制范围,这是我可以修改我的
java.lang.ClassNotFoundException:jakarta.enterprise.inject.spi.el.ELAwareBeanManager
我目前正在将项目从 Java 11 迁移到 Java 17,从 Spring 5 迁移到 Spring 6,以及从 RichFaces 迁移到 PrimeFaces 14(雅加达)。进行必要的更改后,我遇到以下情况
在 WildFly 21 上无法使用 JSF 2.2 访问 CDI 支持 Bean
我一直在按照本教程在 Windows 10 上的 Wildfly-21.0 服务器上使用 JAVA-14 和 Maven 在 Eclipse 版本 2020-09 (4.17.0) 上设置 JSF。完成页面上的说明后,我可以
我正在创建我的第一个项目 Java EE 7,但我遇到了麻烦。感谢任何帮助。 雄猫7.0.34 JSF 2.2 Primefaces 3.5 javaee-api-7.0.jar 当应用程序启动时,Tomcat 日志显示
我正在尝试在 Spring Boot 应用程序中使用 CDI 装饰器。 这是 Spring beans 的 CDI 装饰器一文,描述了其目的及其实现方式。这篇文章很漂亮...
使用CDI Decorator装饰托管Validator时出错
我有一个无状态的 Java EE 7 WebService,并且想要使用验证框架来验证传入的数据。这一切都很好。然后我想将任何 ConstraintViolationException 转换为 som...
将 Bean 注入 Hibernate BeforeExecutionGenerator
我使用 Hibernate 的 BeforeExecutionGenerator 和 IdGeneratorType 注释来为我的实体生成自定义 id。 我怎样才能将一些bean(或配置属性)注入到我的实现中......
在Java EE 7中,这里@Named注解的目的和用途是什么?即使没有它,容器也应该能够在运行时发现这个 bean,对吗? 另外,@Singleton 做什么?如果
我有一个有状态 bean 和 @QuarkusTest 下的一些不同的测试用例。但每个测试用例都需要干净的 bean 状态才能正确执行(测试不应相互依赖)。 目前...
我目前能够使用自定义异常处理程序捕获所有异常,如下所述: JSF 2 全局异常处理,导航到错误页面未发生 我正在做广泛的你...
如何在 Jakarta EE 项目中为自定义注释的拦截器提供运行时参数?
我正在开发一个 Jakarta EE 项目,其中有一个自定义注释和一个关联的拦截器。该注释用于执行一些逻辑,并且它作为独立的项目按预期工作。然而,...
@Inject 使用 Java SE 在 Weld 3 中传递 null
我在普通的 Java SE 8 程序中使用 CDI 2.0 和 Weld 3.0.0 Final(类路径中完整的weld-se-shaded.jar),如下所示。它有什么问题或者我错过了什么,因为@Inject ...
我使用 Eclipse 和 JBoss Tools 为 Apache TomEE 8.0.16 服务器开发基于 JSF 2.3 和 JPA 2.2 的 Web 应用程序,并使用 Hibernate 作为 JPA 实现。我的项目有很多下拉菜单......
如何从 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 中选择容器
使旧的 httpssession 失效会删除当前 httpssession 的上下文
我的应用程序使用 @ViewScoped LoginBean 处理登录,该 LoginBean 注入了一个存储用户信息和当前 HttpSession 的 @SessionScoped SessionBean。 这个应用程序允许用户N单独