【问题标题】:Jetty: adding <resource-env-ref> programmaticallyJetty:以编程方式添加 <resource-env-ref>
【发布时间】:2011-04-09 16:42:20
【问题描述】:

我有一个带有嵌入式 Jetty 和 Wicket 的独立应用程序。
我想使用 CDI 进行注入。

所以我找到了http://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#d0e5286
现在我正在尝试以编程方式添加它,但它非常复杂。

如何编码?

我发现的其他来源是:

到目前为止我有:

  Server server = new Server( 8080 );
  Context ctx = new Context( server, "/", Context.NO_SECURITY | Context.SESSIONS );


  try {
     //BeanManager
     new org.mortbay.jetty.plus.naming.Resource( ctx, "BeanManager", 
        new javax.naming.Reference(
           "javax.enterprise.inject.spi.BeanManager",
           "org.jboss.weld.resources.ManagerObjectFactory", null )
     );
  } catch ( NamingException ex ) {
     log.error(...);
  }


  // Wicket.
  final ServletHolder wicketSH = new ServletHolder( new MyReloadingWicketServlet() );
  wicketSH.setInitParameter( "applicationClassName", WicketApplication.class.getName() );
  ctx.addServlet( wicketSH, "/*" );

【问题讨论】:

  • 也许我找到了 - weld-wicket
  • 哦,不。 Weld-wicket 现在是 seam-wicket,其文档参考了weld-wicket's,它只描述了 XML 配置:(

标签: jetty jndi cdi jboss-weld


【解决方案1】:

以编程方式添加 resource-env-ref 没有意义。 JavaEE refs 的重点是将开发者与部署者分开:开发者声明一个引用,部署者将引用绑定到环境中的托管资源。如果您没有或不需要部署者角色,那么您也不需要 resource-env-ref:只需自己查找目标对象(对于 CDI 集成,我认为这将是一个 @Produces 方法)。

【讨论】:

  • 嗯,你可能是对的。我只在文档中看到了一个示例,并且因为 Seam-Wicket 的 Weld JNDI 查找不起作用而难以让它工作。最后,我使用了某人的补丁,它从 ServletContext 存储和获取 BeanManager。
  • @Ondra Žižka 你能发布你的代码吗?我必须解决一些非常相似的问题
猜你喜欢
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2012-02-29
  • 2021-08-23
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多