Причал: добавлениепрограммно - PullRequest
1 голос
/ 09 апреля 2011

У меня есть отдельное приложение со встроенными 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, "/*" );

1 Ответ

1 голос
/ 17 апреля 2011

Программно добавлять ресурс-env-ref не имеет смысла.Смысл ссылок на JavaEE состоит в том, чтобы отделить разработчика от развертывателя: разработчик объявляет ссылку, а развертыватель связывает ссылку с управляемым ресурсом в среде.Если у вас нет роли развертывателя или вам не нужна, то вам также не нужен ресурс-env-ref: просто найдите целевой объект самостоятельно (для интеграции CDI, я думаю, это будет метод @Produces).1001 *

...