Java Jersey@Path不在码头工作+;servlet

Java Jersey@Path不在码头工作+;servlet,java,jersey,jetty,Java,Jersey,Jetty,我无法让Jetty+servlet+Jersey的组合正常工作。以下是我的步骤: 1。xml <packaging>war</packaging> ... <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-se

我无法让Jetty+servlet+Jersey的组合正常工作。以下是我的步骤:

1。xml

<packaging>war</packaging>
...
<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.17</version>
    </dependency>
</dependencies>
<?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" metadata-complete="false" version="3.1">
  <servlet>
    <servlet-name>org.example.MyApplication</servlet-name>
  </servlet>
  <servlet-mapping>
    <servlet-name>org.example.MyApplication</servlet-name>
    <url-pattern>/resources</url-pattern>
  </servlet-mapping>
</web-app>
我部署WAR,通过执行
mvn clean compile package
,将其复制到
WebApps
目录来创建WAR。访问以下URL将返回我的硬编码JSON:

http://localhost:8080/test-1.0-SNAPSHOT/resources
{"hello": 1337}
现在,我在我的资源中更改
@路径

@Path("/bla")
@Produces(MediaType.APPLICATION_JSON)
public class MyResource {
    @GET
    public String get() {
        return "{\"hello\": 1337}";
    }
}
现在,以下URL似乎都不起作用:

http://localhost:8080/test-1.0-SNAPSHOT/resources/bla
http://localhost:8080/test-1.0-SNAPSHOT/bla
http://localhost:8080/test-1.0-SNAPSHOT/resources
http://localhost:8080/test-1.0-SNAPSHOT/resources/bla/
...

我尝试了几种组合,但无法使其工作。

尝试将其添加到您的web.xml。这将启用对jersey的包扫描,因此将扫描您的包
org.example

<servlet>
        <servlet-name>Services</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                org.example
            </param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.scanning.recursive</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Services</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>

服务
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
org.example
jersey.config.server.provider.scanning.recursive
假的
1.
服务
/资源/*
在这里,您可以看到一个完整的工作示例(为tomcat定义),但我已经在jetty上成功地移植了它

这里还有一个小的引导帮助-它使用Jersey作为jetty的API部分-它还有一个很好的教程,可以帮助您很多!

您好,Jetty philosophy即将在端口上部署一个Web应用程序。因此,您将拥有一个打包为单个JAR的webapp。你为什么要热部署,你能告诉我们你到底想做什么,我会更容易帮助你。谢谢。我将创建一个包含更多详细信息的新问题。无需创建新问题,只需编辑此问题。我已更新此问题。我还把标题改得更具体一些。关于你的项目是如何设置的,只需注释掉整个web.xml,它就会工作的。我让它工作了!我会更新我的问题。我不确定这是否是预期的行为,但在我看来,这似乎是一个错误。我会解释的。谢谢你粘贴你的web.xml。在编辑之前,您有
/*
url模式,所以我尝试了一下。它成功了。/resources/*Ah:)很高兴她成功了——如果这个答案对你来说合适的话——请接受它。我还将其更改为/resources/*以便将其置于/resources下作为基础;)非常感谢。很高兴来到这里。
<servlet>
        <servlet-name>Services</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                org.example
            </param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.scanning.recursive</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Services</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>