gpt4 book ai didi

java - 带有 Maven jetty 插件的基本 Jersey Web 服务

转载 作者:行者123 更新时间:2023-11-30 02:51:04 25 4
gpt4 key购买 nike

在我之前的工作中,我一直在使用 Jersey 提供的 Restfull Web 服务以及 Maven Jetty 插件。但现在对于一个个人项目,我自己从头开始,我似乎连基本版本都无法运行。我尝试遵循一些教程,但它们要么过时,要么偏离主题。

我尝试过的最新示例是: jersey 2 + spring 4 + jetty-maven-plugin

所以下面的配置使插件运行,但无论我尝试哪个网址,它都会给我 404

pom:

<?xml version="1.0" encoding="UTF-8"?>
<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>
<packaging>war</packaging>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<jetty.version>9.3.11.v20160721</jetty.version>
<jersey.version>2.23.1</jersey.version>
</properties>

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>

<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
</plugin>
</plugins>
</build>
</project>

web.xml

<?xml version="1.0"  encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>test</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.foo.bar</param-value>
</init-param>
<!--<load-on-startup>1</load-on-startup>-->
</servlet>

<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

</web-app>

资源配置.java

package com.foo.bar;

import org.glassfish.jersey.server.ResourceConfig;

public class ResourceConfiguration extends ResourceConfig {
public ResourceConfiguration() {
register(entrypoint.class);
}

}

和我的服务等级

package com.foo.bar;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

public class entrypoint {
@GET
@Path("/test")
@Produces(MediaType.TEXT_PLAIN)
public String test() {
return "it works";
}

@GET
@Path("/")
@Produces(MediaType.TEXT_HTML)
public String test2() {
return "it works";
}

}

没什么特别的,我觉得这应该是开箱即用的。Jetty 服务器启动,但就像我说的,我尝试的每个 url 排列都会得到 jetty 404 页面。

预先感谢您提供的所有意见。

最佳答案

只需进行一些更改即可使其正常工作。请按照以下步骤操作。

第 1 步:使用 POJO 映射和资源配置类(而不是包名称)更改您的 web.xml,如下所示。

<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>bar.com.ravi.ResourceConfiguration</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

第 2 步:使用包信息更改您的 ResourceConfiguration 类,如下所示。

public class ResourceConfiguration extends ResourceConfig {
public ResourceConfiguration() {
packages("bar.com.ravi");
register(Entrypoint.class);
}

}

第 3 步:使用类级别 @Path 注解更改您的 EntryPoint 类。

  import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hi")
public class Entrypoint {
@GET
@Path("/test")
@Produces(MediaType.TEXT_PLAIN)
public String test() {
return "it works";
}

@GET
@Path("/")
@Produces(MediaType.TEXT_HTML)
public String test2() {
return "it works";
}

}

第 4 步:在构建标记中更改 POM.xml,如下所示。

<build>
<finalName>bar</finalName>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.11.v20150529</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/bar</contextPath>
</webApp>
<httpConnector>
<port>8888</port>
</httpConnector>
</configuration>
</plugin>
</plugins>
</build>

第 5 步:在命令提示符下运行您的命令。

mvn jetty:run

第 6 步:使用以下 URL 访问浏览器

http://localhost:8888/bar/hi/test

关于java - 带有 Maven jetty 插件的基本 Jersey Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com