我正在使用 Intellij 和 Glassfish 服务器开发一个 Web 应用程序。但是,它显示错误 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 {
}
}
这是我的运行配置的屏幕截图:
我似乎没有发现哪里出了问题。如果有任何帮助,我将不胜感激。
最佳答案
您覆盖了错误的应用程序
。您使用的是 Java FX,它用于制作图形用户界面。您需要扩展javax.ws.rs.core.Application
。这就是为什么当你重写一个方法时你应该总是使用@Override
;所以您知道您实际上正在重写类中的方法(即 getClasses()
和 getSingletons()
)。如果您添加了 @Override
,您会发现它不是您正在使用的 Application
中的方法。
关于java - Glassfish 服务器在应找到页面的路径上显示错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848670/