码头:以编程方式添加<resource-env-ref>

问题描述

| 我有一个带有嵌入式Jetty和Wicket的独立应用程序。 我想使用CDI进行注射。 所以我找到了http://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#d0e5286 现在我正尝试以编程方式添加代码,但这非常复杂。 我该如何编码? 我发现的其他来源是: http://osdir.com/ml/java.jetty.support/2007-02/msg00198.html http://docs.codehaus.org/display/JETTY/JNDI 到目前为止,我有
  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,\"/*\" );
    

解决方法

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