【问题标题】:RESTEasy on TJWS with CDIRESTEasy 在 TJWS 上与 CDI
【发布时间】:2012-05-12 14:56:18
【问题描述】:

我尝试使用 TJWS Embeddable Servlet Container 使用此用户指南 http://docs.jboss.org/resteasy/docs/2.3.3.Final/userguide/html/RESTEasy_Embedded_Container.html#d0e2640 启动 RestEasy 应用程序

应用程序在 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;
    }
}

在 main 中启动 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 时,我在 UserResource.list() 方法中得到 NullPointerException,因为 userManager 未注入并且为空。

有没有办法注入 userManager?

【问题讨论】:

  • 如果您手动启动它可能不会发生某些 CDI 集成。你看过 Arquillian 在容器中进行测试吗?

标签: cdi resteasy tjws


【解决方案1】:

TJWS 是一个独立的 servlet 容器和 Web 服务器,不支持像 @Inject 这样的 EE 注释。要使代码正常工作,您必须使用 JBoss AS 等 EE 容器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2012-03-30
    • 2013-11-21
    相关资源
    最近更新 更多