Не удается выполнить CDI в Glassfish 4.0

Я пытаюсь запустить особенно простой тестовый пример, используя последнюю продвигаемую сборку Glassfish 4.0. Я попытался разместить META-INF/beans.xml во всех возможных перестановках, включая собственную банку в WEB-INF/lib.

Лучшее, что я получаю, это следующие ошибки с макетом + источниками, которые перечислены после него:

WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Test : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Test
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Foo : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Foo
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.App : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.App
INFO: Registering the Jersey servlet application, named com.example.cdibug.App, at the servlet mapping /rest/*, with the Application class of the same name.
INFO: Loading application [cdibug] at [/cdibug]
INFO: cdibug was successfully deployed in 106 milliseconds.

Макет:

$ jar tvf cdibug.war 
     0 Tue May 07 23:19:48 HST 2013 META-INF/
    68 Tue May 07 23:19:48 HST 2013 META-INF/MANIFEST.MF
     0 Tue May 07 23:14:20 HST 2013 META-INF/beans.xml
     0 Tue May 07 23:19:32 HST 2013 WEB-INF/
     0 Tue May 07 23:18:58 HST 2013 WEB-INF/classes/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/example/
     0 Tue May 07 23:09:34 HST 2013 WEB-INF/classes/com/example/cdibug/
   174 Tue May 07 22:54:28 HST 2013 WEB-INF/classes/com/example/cdibug/Test.java
   171 Tue May 07 22:54:04 HST 2013 WEB-INF/classes/com/example/cdibug/App.java
   309 Tue May 07 22:56:30 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.java
   398 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Test.class
   304 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/App.class
   634 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.class
$

Источник beans.xml:

$ cat META-INF/beans.xml # EMPTY 0 bytes

Источник App.java:

$ cat WEB-INF/classes/com/example/cdibug/App.java 
package com.example.cdibug;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class App extends Application {
}

Источник Test.java:

$ cat WEB-INF/classes/com/example/cdibug/Test.java 
package com.example.cdibug;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/test")
public class Test {
  @GET
  public String greet () {
    return "hello";
  }
}

Источник Foo.java:

$ cat WEB-INF/classes/com/example/cdibug/Foo.java 
package com.example.cdibug;

import java.util.logging.Logger;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Foo {
  public Foo () {
    System.out.println("stdout: Foo()");
    System.err.println("stderr: Foo()");
    Logger.getGlobal().info("global_log: Foo()");
  }
}

person necromancer    schedule 08.05.2013    source источник
comment
Это выглядит как ошибка в Glassfish, если только упаковка не испорчена.   -  person LightGuard    schedule 08.05.2013
comment
Вы пытались поместить beans.xml в WEB-INF?   -  person John Ament    schedule 08.05.2013
comment
Да. beans.xml, кажется, игнорируется, если он помещается в WEB-INF. Абсолютно никаких сообщений/признаков жизни от CDI, и ни одно из трех сообщений в public Foo() { /* ... */ } не видно. Я также попробовал это в более сложном примере, где я попытался @Inject bean-компонента в области приложения, и попытка внедрения вызвала ошибку, когда beans.xml был в WEB-INF   -  person necromancer    schedule 09.05.2013
comment
@LightGuard спасибо. детали упаковки находятся в выводе команды jar tvf в моем посте, и я почти уверен, что все в порядке.   -  person necromancer    schedule 09.05.2013
comment
Используете ли вы какие-либо функции Java EE 7? Если нет, попробуйте Glassfish 3.1.2. Возможно, они не закончили интеграцию Weld 2   -  person LightGuard    schedule 09.05.2013
comment
я не зависит от функции. я кодирую новый проект по своему собственному графику и подумал, что он может выиграть от CDI. поскольку до Java EE 7 осталось менее 3 месяцев, я хочу начать с нее, чтобы мой проект имел лучшую архитектуру, чем в противном случае. Я сообщил об этом как об ошибке, и, надеюсь, кто-нибудь посмотрит на это. спасибо за ваше предложение!   -  person necromancer    schedule 09.05.2013
comment
@LightGuard отлично работало в 4.0.0-b87, вероятно, была ошибка в версии, интегрированной в eclipse kepler m6.   -  person necromancer    schedule 09.05.2013


Ответы (1)


это была ошибка в версии в комплекте с eclipse kepler m6. он отлично работает под 4.0.0-b87

person necromancer    schedule 09.05.2013