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

如何将构造函数注入CDI与JNDI资源一起使用?

法风畔
2023-03-14

我试图弄清楚如何在CDI中使用构造函数注入,其中一个参数是JNDI查找。

用正常的打野,我可以做到以下几点:

@Stateless
public class Publisher
{

  @Inject
  @JMSConnectionFactory("java:/jms/remoteCF")
  private JMSContext context;

  @Resource(lookup="java:global/remote")
  private InitialContext externalContext;

  private Topic genericTopic;

  @PostConstruct
  public void init(){
       try {  
            Object obj = externalContext.lookup(TOPIC);  
            genericTopic = (javax.jms.Topic) obj;  
       } catch (NamingException namingException) {  

       }  
  }
}  
 @Inject
  public Publisher( @JMSConnectionFactory("java:/jms/remoteCF") JMSContext context,  @Resource( "java:global/remote") InitialContext externalContext ){
      this.context = context;
      this.externalContext = externalContext;
  }

如何指定externalcontext参数是通过JNDI查找检索的bean?在哪里指定JNDI名称?

共有1个答案

宰父浩漫
2023-03-14

你有两个选择。

  1. 使用限定符为主题创建一个注入点。类似于:

@production@named(TOPIC)public TOPIC findTopic(JMSContext context){return context.createTopic(TOPIC);}

@产生@named(“someName”)@resource(“java:global/remote”)private InitialContext externalcontext;

 类似资料:
  • 我分配给类的属性是: 我需要设置ISSOLD,并敦促其设置为false。这就是我创建默认构造函数的原因。但是我使用Builder()来设置类字段,并且在某个地方使用getter/setter来设置属性。 我的要求是将isPurpressed/IsSoldOut设置为True/False,但不能为NULL。 请指导我如何才能做到这一点。

  • 我想把它转换成这样的东西: 这将使类不可变并且更容易进行单元测试。问题是,由于executorService需要通过@Resource注释获得,它似乎不能通过构造函数注入。

  • 问题内容: 我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化: 然后,我像这样使用此bean,并且效果很好。 但是我想用注释指定contructor arg值,例如 这可能吗 ? 提前致谢 问题答案: 首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的注释(spring 3.0) 就我所看到的问题而言,这可

  • 我把下面的内容看做是构造函数和setter注入的区别之一。有人能用一些简单的例子解释一下下面的区别吗,我对术语完全功能对象和不完全对象有点困惑。 -

  • 想改进这个问题吗?更新问题,以便可以通过编辑这篇文章来回答事实和引文。 我确实使用Spring和Lombok 没有原型bean,我们必须传递目标类所需的依赖项 我们如何将bean标记为原型并正确处理依赖bean和构造函数参数? 选项1 -没有原型beans 选项 2 - 原型豆

  • 问题内容: 我有一堂课: 配置文件 我如何将其注入一些构造函数,即: 我希望此字符串具有从Config注入的值。那可能吗? 问题答案: 您将必须命名Bean,然后在自动装配引用该名称时使用注释。 例: 配置文件 SomeC.java