使用CDI / Weld JAX-RS / RESTEasy找不到的资源

时间:2013-11-24 20:44:28

标签: java jax-rs cdi resteasy weld

我尝试在Java SE环境中在Netty上设置CDI / Weld和JAX-RS / RESTEasy,但我得到的是以下异常:

javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8000/

我的项目具有以下依赖项:

<dependency>
  <groupId>org.jboss.resteasy</groupId>
  <artifactId>resteasy-netty4</artifactId>
  <version>3.0.5.Final</version>
</dependency>
<dependency>
  <groupId>org.jboss.resteasy</groupId>
  <artifactId>resteasy-cdi</artifactId>
  <version>3.0.5.Final</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-all</artifactId>
  <version>4.0.12.Final</version>
</dependency>

我在src / main / resources / META-INF目录中放置了一个beans.xml文件以启用CDI。

启动netty的代码:

@Singleton
public class App {

  private static NettyJaxrsServer netty;

  public void printHello(
          @Observes ContainerInitialized event,
          @Parameters List<String> parameters) 
          throws Exception {
    System.out.println("Starting Netty ...");
    ResteasyDeployment deployment = new ResteasyDeployment();
    netty = new NettyJaxrsServer();
    netty.setDeployment(deployment);
    netty.setPort(8000);
    netty.setRootResourcePath("");
    netty.setSecurityDomain(null);
    netty.start();
  }

示例资源如下所示:

@Path("/hi") // tried "/" too
public class Index {

  @GET
  public String get() {
    return "Hi!";
  }
}

由于所有这些都不起作用,我添加了一个应用程序类:

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

@ApplicationPath("/")
public class DemoApplication  extends Application {
  // empty
}

但错误信息仍然相同。

缺少什么?如何设置Weld和RESTEasy?

1 个答案:

答案 0 :(得分:0)

你看过这个链接了吗? Tomcat 7, Weld, RESTEasy not Scanning JARs

它说你应该把beans.xml放在WEB-INF而不是META-INF。