当前位置: 首页 > 知识库问答 >
问题:

@Startup@Singleton bean实例的注入为空-Tomee Webprofile 1.6.0.2

吕承望
2023-03-14

当我试图在POJO中使用它时,我的@Singleton@Startup bean实例是空的,Tomee正在成功地创建、启动和放置在“我的Singleton容器”中。我已经尝试过和没有POJO的@ManagedBean类比。我是否错过了规范或教程中的一些基本内容?

非常感谢,特德·S。

Tomee启动日志:

Dec 21, 2014 2:48:24 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=MyStartupBean, ejb-name=MyStartupBean, container=My Singleton Container)

MyStartupBean.java:

@Startup
@Singleton
public class MyStartupBean
{
    private final Properties _companyNames = new Properties();

    @PostConstruct
    public void init() 
    {   
        _companyNames.put("key1", "ABC Company");
        _companyNames.put("key2", "XYZ Company");
     }

    public Properties getCompanyNames()
    {
        return _companyNames;
     }
}

MyPojo。爪哇:

public class MyPojo
{
    @EJB
    private MyStartupBean _startupBean;
    private String _companyName;    

    public MyPojo(String inputKey)
    {
        Properties companyNames = _startupBean.getCompanyNames(); // <== _startupBean is null
        String name = companyNames.getProperty(inputKey);
        setCompanyName(name);
    }

    public void setCompanyName(String name)
    {
        _companyName = name;
    }

    public String getCompanyName()
    {
        return _companyName;
    }
}

共有1个答案

轩辕炎彬
2023-03-14

你可能正在实例化你的pojo,不是吗?

MyPojo mp = new MyPojo(someInput);

当你这么做的时候,注射不起作用。您需要使用托管引用来处理CDI/EJB组件。

 类似资料:
  • 我已经编写了一个EJB3业务逻辑并部署在GlassFish下。现在,我将通过同一个容器中的客户机,用@EJB注入接口来测试它。 数据源bean是一个在构造函数中设置连接并通过get()方法释放的无状态bean

  • 我正在使用Spring Framework/Data/HATEOAS,并试图添加dozer。 和以下汇编程序: 所以,-我对豆子和注射很陌生-但我想工厂的豆子是?应该?来注入映射器。但是映射器肯定是空的。我知道我做得不对,但我做错了什么?

  • 我试图在CDI注入的帮助下实现某种“插件特性”。但我遇到了一些麻烦,我想我可能会从我的同事“堆垛工”那里得到一些外部的观点:-) 到目前为止,我已经做到了这一点: 当我“运行”这个时,两个字段都会被注入相应的实例。但当我尝试像这样更“动态”地注入它们时: 然后我会得到这样一个例外: 这对我来说似乎很奇怪,因为CDI显然“知道”我感兴趣的实例,因为直接注入类型化字段是有效的。所以我想这一定和资格赛有

  • 那么如何解决这个问题呢?为什么为空。

  • 我试图实现一个< code > ContainerRequestFilter 来检查一些东西。最终,它将从SSL客户机证书中提取通用名称,但我还没有做到这一点。过滤器运行在Grizzly HTTP服务器上(Grizzly 2.3.8,没有servlet容器),位于JAX-RS资源(Jersey 2.6)的前面。 当我尝试将注入过滤器时,它为null。 将请求注入到 JAX-RS 资源中,注入是成功

  • 本文向大家介绍Mybatis防止sql注入的实例,包括了Mybatis防止sql注入的实例的使用技巧和注意事项,需要的朋友参考一下 sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如“or ‘1'='1'”这样的语句,有可能入侵参数校验不足的应用程序。所以在我们的应用中需要做一些工作,来防备这样的攻击方式。在一些安全性很高的应用中,比如银行