2012-05-12 3 views
0

Я пытаюсь использовать TJWS Встраиваемый Servlet контейнер для запуска приложения Resteasy с помощью этой UserGuide http://docs.jboss.org/resteasy/docs/2.3.3.Final/userguide/html/RESTEasy_Embedded_Container.html#d0e2640Resteasy на TJWS с КДИ

работы приложения правильно в 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; 
    } 
} 

Start 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 не вводится и имеет значение null.

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

+0

Возможно, какая-либо интеграция с CDI не произойдет, если вы вручную запустите ее. Вы посмотрели на Аркиллиан для тестирования в контейнере? – LightGuard

ответ

0

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

Смежные вопросы