我正在使用 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 {
}
}
这是我的运行配置的屏幕截图:
我似乎没发现哪里出了问题。我将不胜感激任何帮助。
你推翻了错误的
Application
。您使用的是 JavaFX,它用于制作图形用户界面。您需要延长javax.ws.rs.core.Application
。
@Override
;所以你知道你实际上正在重写类中的方法(即 getClasses()
和 getSingletons()
)。如果您添加了 @Override
,您会发现它不是您正在使用的 Application
类中的方法。