Java RESTAPI 404关于映射
我正在尝试在GlassFish4服务器上使用jersey创建RESTAPI。 目前,每当我转到映射时,都会出现错误404: 遗憾的是,我的glassfish控制台日志中没有错误。我还尝试在glassfish管理控制台上手动部署war,以导致相同的错误 有什么我还没有实现的吗Java RESTAPI 404关于映射,java,rest,jakarta-ee,glassfish,jersey-2.0,Java,Rest,Jakarta Ee,Glassfish,Jersey 2.0,我正在尝试在GlassFish4服务器上使用jersey创建RESTAPI。 目前,每当我转到映射时,都会出现错误404: 遗憾的是,我的glassfish控制台日志中没有错误。我还尝试在glassfish管理控制台上手动部署war,以导致相同的错误 有什么我还没有实现的吗 我在项目中创建的所有文件: glassfish-web.xml /图书馆测试 web.xml Jersey Web应用程序 org.glassfish.jersey.servlet.ServletContainer
我在项目中创建的所有文件: glassfish-web.xml
/图书馆测试
web.xml
Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.koen.library
1.
Jersey Web应用程序
/原料药/*
pom.xml
4.0.0
com.koen
图书馆测试
0.0.1
战争
org.apache.maven.plugins
maven战争插件
WebContent\WEB-INF\WEB.xml
2.22
2.22
com.koen.library
图书馆JPA
0.0.1
org.glassfish.jersey.containers
jersey容器servlet
${jersey.version}
假如
org.glassfish.jersey.core
泽西服务器
${jersey.version}
org.glassfish.jersey.media
泽西媒体公司
${parser.version}
BookResource.java
package com.koen.library;
导入java.util.ArrayList;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入com.koen.library.pojo.Book;
@路径(“书籍”)
公共类图书资源{
@得到
@生成(“应用程序/json”)
公共数组列表getAll(){
return new ArrayList(){{add(新书6,“卡拉马佐夫兄弟”,“费奥多·陀思妥耶夫斯基”);};
}
@得到
@路径(“/{id}”)
公共图书getById(@PathParam(“id”)int-id){
返回null;
}
}
解决我问题的方法是:
<param-value>true</param-value>
true
我不得不在web.xml中添加这一行。
现在我的映射没有任何404错误
Web.xml
Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.koen.library
真的
1.
Jersey Web应用程序
/原料药/*
您可以使用Java代码和标准Java EE 7 API(以及:
这将自动将带有@Path
注释的所有资源附加到api
后缀。
如果不希望所有资源都映射到此后缀,则如果重写getClasses()
method:
@ApplicationPath("api")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
return Arrays.asList(com.koen.library.BookResource.class);
}
}
@ApplicationPath(“api”)
公共类应用程序配置扩展应用程序{
@凌驾
公共集如果您使用了spring boot和spring rest,您就不会遇到这个问题,而且您确实遇到的任何问题都会更容易诊断。如果您有任何更改的余地,请立即进行更改。您希望从您的请求中得到什么?一个带有一个图书条目的列表json,请参阅BookResource
,即使它没有给我任何好处ut 404?你是在检查完全没有意义的Port808080吗?是你自己编的,还是你在什么地方找到了这个解决方案?如果是后者,请链接到源代码。我正在用eclipse的gui工具查看我的web.xml。我知道这很奇怪,但又一次,为什么要这样做?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.koen</groupId>
<artifactId>LibraryRestTest</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<jersey.version>2.22</jersey.version>
<parser.version>2.22</parser.version>
</properties>
<dependencies>
<dependency>
<groupId>com.koen.library</groupId>
<artifactId>libraryJPA</artifactId>
<version>0.0.1</version>
</dependency>
<!-- Jersey -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${parser.version}</version>
</dependency>
</dependencies>
</project>
package com.koen.library;
import java.util.ArrayList;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import com.koen.library.pojo.Book;
@Path("books")
public class BookResource {
@GET
@Produces("application/json")
public ArrayList<Book> getAll(){
return new ArrayList<Book>(){{add(new Book(6, "The Brothers Karamazov", "Fyodor Dostoevsky"));}};
}
@GET
@Path("/{id}")
public Book getById(@PathParam ("id") int id){
return null;
}
}
<param-value>true</param-value>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>
jersey.config.server.provider.packages
</param-name>
<param-value>
com.koen.library
</param-value>
</init-param>
<param-value>true</param-value>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
@ApplicationPath("api")
public class ApplicationConfig extends Application {
}
@ApplicationPath("api")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
return Arrays.asList(com.koen.library.BookResource.class);
}
}