如何仅使用注释(不使用web.xml)设置JAX-RS Application?

前面提到的依赖项对我不起作用。从Jersey用户指南中:

Jersey提供了两个Servlet模块。第一个模块是Jersey核心Servlet模块,它提供核心Servlet集成支持,并且在任何Servlet 2.5或更高版本的容器中都是必需的:

<dependency>

<groupId>org.glassfish.jersey.containers</groupId>

<artifactId>jersey-container-servlet-core</artifactId>

</dependency>

为了支持其他Servlet 3.x部署模式和异步JAX-RS资源编程模型,需要一个附加的Jersey模块:

<dependency>

<groupId>org.glassfish.jersey.containers</groupId>

<artifactId>jersey-container-servlet</artifactId>

</dependency>

jersey-container-servlet模块取决于jersey-container-servlet-core模块,因此,在使用该模块时,不必显式声明jersey-container-servlet-core依赖性。

回答:

接受的答案确实有效,但前提是将Web应用程序部署到Glassfish或Wildfly之类的应用程序服务器,并且可能部署到具有EE扩展名的servlet容器(例如TomEE)。它不适用于像Tomcat这样的标准servlet容器,我敢肯定,大多数在此寻找解决方案的人都想使用它。

如果你正在使用标准的Tomcat安装(或其他一些servlet容器),则需要包括REST实现,因为Tomcat并不附带此实现。如果你使用的是Maven,请将其添加到以下dependencies部分:

<dependencies>

<dependency>

<groupId>org.glassfish.jersey.bundles</groupId>

<artifactId>jaxrs-ri</artifactId>

<version>2.13</version>

</dependency>

...

</dependencies>

然后只需将应用程序配置类添加到你的项目中。如果除了设置其余服务的上下文路径之外,没有其他特殊配置需求,则该类可以为空。添加此类后,你无需在web.xml其中进行任何配置(或完全不需要配置):

package com.domain.mypackage;

import javax.ws.rs.ApplicationPath;

import javax.ws.rs.core.Application;

@ApplicationPath("rest") // set the path to REST web services

public class ApplicationConfig extends Application {}

之后,使用Java类中的标准JAX-RS批注直接声明Web服务:

package com.domain.mypackage;

import javax.ws.rs.Consumes;

import javax.ws.rs.Produces;

import javax.ws.rs.GET;

import javax.ws.rs.MatrixParam;

import javax.ws.rs.Path;

// It's good practice to include a version number in the path so you can have

// multiple versions deployed at once. That way consumers don't need to upgrade

// right away if things are working for them.

@Path("calc/1.0")

public class CalculatorV1_0 {

@GET

@Consumes("text/plain")

@Produces("text/plain")

@Path("addTwoNumbers")

public String add(@MatrixParam("firstNumber") int n1, @MatrixParam("secondNumber") int n2) {

return String.valueOf(n1 + n2);

}

}

这应该是你所需要的。如果你的Tomcat安装程序在端口8080上本地运行,并且将WAR文件部署到上下文中myContext,则将…

http://localhost:8080/myContext/rest/calc/1.0/addTwoNumbers;firstNumber=2;secondNumber=3

…应该产生预期的结果(5)。

以上是 如何仅使用注释(不使用web.xml)设置JAX-RS Application? 的全部内容, 来源链接: utcz.com/qa/412941.html

回到顶部