java - Glassfish 服务器在应找到页面的路径上显示错误 404
问题描述
我正在使用 Intellij 和 Glassfish 服务器开发一个网络应用程序。但是,它显示错误 404,找不到页面。具体来说:
HTTP Status 404 - Not Found
type Status report
messageNot Found
descriptionThe requested resource is not available.
GlassFish Server Open Source Edition 4.1.1
我无法理解为什么会这样。我正在用 Gradle 做这个。
我首先使用它web.xml
,然后通过扩展,Application
但在这两种情况下结果都是一样的。
我尝试了关于 SO 的类似问题的解决方案,但没有一个有效。
这是 RootResource 代码:
package com.pd.jersey.jaxb;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/")
class RootResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello(){
return "Hello";
}
}
这是 Todo 资源:
package com.pd.jersey.jaxb;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/todo")
public class TodoResource {
@GET
@Produces({MediaType.APPLICATION_XML})
public Todo getXML() {
Todo todo = new Todo();
todo.setSummary("Application XML Todo Summary");
todo.setDescription("Application XML Todo Description");
return todo;
}
// This method is called if JSON is requested
@GET
@Produces({MediaType.APPLICATION_JSON})
public Todo getJSON() {
Todo todo = new Todo();
todo.setSummary("Application JSON Todo Summary");
todo.setDescription("Application JSON Todo Description");
return todo;
}
// This can be used to test the integration with the browser
@GET
@Produces({ MediaType.TEXT_XML })
public Todo getHTML() {
Todo todo = new Todo();
todo.setSummary("XML Todo Summary");
todo.setDescription("XML Todo Description");
return todo;
}
}
这是应用程序代码:
package com.pd.jersey.jaxb;
import javafx.application.Application;
import javafx.stage.Stage;
import javax.ws.rs.ApplicationPath;
import java.util.HashSet;
import java.util.Set;
@ApplicationPath("/rest")
public class RestApplication extends Application {
// All request scoped resources and providers
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<>();
classes.add(TodoResource.class);
return classes;
}
// all singleton resources and providers
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<>();
return singletons;
}
@Override
public void start(Stage primaryStage) throws Exception {
}
}
这是我的运行配置的屏幕截图:
我似乎没有发现出了什么问题。我会很感激任何帮助。
解决方案
你压倒了错误的Application
。您正在使用的是 Java FX,它用于制作图形用户界面。你需要扩展javax.ws.rs.core.Application
. 这就是为什么@Override
在重写方法时应该始终使用的原因;所以你知道你实际上覆盖了类中的一个方法(即getClasses()
和getSingletons()
)。如果您添加了@Override
,您会发现它不是Application
您正在使用的方法。
推荐阅读
- matlab - 传递带有日期时间和数字的 .txt 文件
- javascript - 通过 CDN 使用路由器和 react
- spring-boot - 从 application.properties 文件读取值时出现“标记无效”错误
- android - SEND_SMS 十月政策更新
- c++ - 我正在学习 c++,并且已经设置了一项任务,即使用 && 和 || 查找输入的数字可以被 5 或 6 或两者整除的位置。运算符
- c++ - 在用户定义的类 C++ 中重载下标运算符
- database - MongoDB从数据库中获取速度很慢
- c - 函数不会打印特定列表
- javascript - JSON 中的二进制数据
- android - 设置注释处理器会导致 META-INF/DEPENDENCIES 出现问题