ОТДЫХ на TJWS с CDI

Я пытаюсь использовать встраиваемый контейнер сервлетов TJWS для запуска приложения RestEasy с помощью этого руководства пользователя http://docs.jboss.org/resteasy/docs/2.3.3.Final/userguide/html/RESTEasy_Embedded_Container.html

Приложение работает правильно в JBOSS7-AS. Я хочу использовать TJWS для отладки и модульного тестирования, но есть проблема с внедрением зависимостей.

Я создаю ресурсный класс UserResource, который с помощью CDI внедряет служебный класс UserManager:

@Path("users")
@SessionScoped
class UserResource {

  @Inject
  UserManager userManager; // simple interface and imlementation

  public UserResource() {} // constructor with no parameters for bean

    @Path("list")
    @GET
    public List<User> list() {
       List<User> userList = userManager.getList(); // NullPointerException
       return userList;
    }
}

Запустите TJWS в основном:

public static void main(String[] args) throws IOException {
    TJWSEmbeddedJaxrsServer tjws = new TJWSEmbeddedJaxrsServer();
    tjws.setPort(9997);
    tjws.start();

    tjws.getDeployment().getRegistry().addPerRequestResource(User.class);
}

Когда я пытаюсь получить http://localhost/users/list через браузер я получаю исключение NullPointerException в методе UserResource.list(), потому что userManager не введен и является нулевым.

Есть ли способ внедрить userManager?

1 ответ

Решение

TJWS - это отдельный контейнер сервлетов и веб-сервер, который не поддерживает аннотации EE, такие как @Inject. Чтобы код работал, вы должны использовать EE-контейнер, такой как JBoss AS.

Другие вопросы по тегам