Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTAPI 404关于映射_Java_Rest_Jakarta Ee_Glassfish_Jersey 2.0 - Fatal编程技术网

Java RESTAPI 404关于映射

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

我正在尝试在GlassFish4服务器上使用jersey创建RESTAPI。 目前,每当我转到映射时,都会出现错误404:

遗憾的是,我的glassfish控制台日志中没有错误。我还尝试在glassfish管理控制台上手动部署war,以导致相同的错误

有什么我还没有实现的吗


我在项目中创建的所有文件: 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);
    }
}