gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:25 25 4
gpt4 key购买 nike

我尝试在 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?

最佳答案

您检查过此链接吗? Tomcat 7, Weld, RESTEasy not Scanning JARs

它表示您应该将 beans.xml 放在 WEB-INF 而不是 META-INF 中。

关于java - 使用 CDI/Weld JAX-RS/RESTEasy 找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com