java - 尝试使用正在运行的 Web 应用程序中的 CDI 实例化 bean

标签 java dependency-injection cdi

我有一个 jar,其中包含定义如下的 @Stateless 类

 @Stateless 
 public class TestBean() {
     @Inject 
     AnotherBean bean2;
     public String getThis() {
      return bean2.getAString();   
     }
 }

在 Wildfly 10.1.0 上运行的 Web 应用程序(依赖于此 jar)想要实例化此 bean 并使用其方法。 Web 应用程序调用方法可能是一个休息端点(由其他一些 Web 应用程序调用)或只是一个常规的 java 方法。

实例化 TestBean 的最佳方法是什么?我尝试了几种解决方案,但都不起作用。

例如这个

Building a CDI 2 standalone

还有这个

Does CDI work for regular Java application?

我对 CDI 及其工作原理不熟悉,我想知道这是否在某处得到了很好的解释?

最佳答案

不太清楚你的问题是什么,但如果你在 WAR 文件中有 JAX-RS 资源,那么这应该可以工作

@Path("/somePath")
@RequestScoped
public class SomeResource {
    @Inject
    private TestBean testBean;
    @GET
    public String doGet() {
        return testBean.getThis();
    }
}

关于java - 尝试使用正在运行的 Web 应用程序中的 CDI 实例化 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449335/

相关文章:

primefaces、延迟加载数据表和 jsf @conversation 范围 bean

java - 从 View 调用 Activity

java - 如何在可运行的 jar 中访问我的应用程序资源?

c# - 依赖注入(inject) : ASP vNext. 这是如何工作的?

java - 如何避免Google guice注入(inject)器getInstance()由于null而重复调用?

maven - org.jboss.weld.exceptions.DeploymentException : WELD-001409: Ambiguous dependencies for type Bean with qualifiers @Default

java - 如何在 Spring 上重现焊接实例行为

java - Vaadin 应用程序可以从命令行运行,但不能在 IntelliJ 中运行

java - 异常无法转换为 Throwable

c# - 使用 SimpleInjector 为 AccountController/ApplicationUserManager 注册 UserStore