我尝试在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?
答案 0 :(得分:0)
你看过这个链接了吗? Tomcat 7, Weld, RESTEasy not Scanning JARs
它说你应该把beans.xml
放在WEB-INF而不是META-INF。