Я не могу получить комбинацию Jetty + servlet + Jersey. Вот мои шаги:Джерси @Path не работает в Jetty + servlet
1. pom.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>
2. web.xml
<?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>
3. Источники
package org.example;
import org.glassfish.jersey.server.ResourceConfig;
import javax.ws.rs.ApplicationPath;
@ApplicationPath("resources")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("org.example");
}
}
package org.example;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public class MyResource {
@GET
public String get() {
return "{\"hello\": 1337}";
}
}
Я развертываю WAR, созданный путем выполнения mvn clean compile package
, скопировав его в каталог web-apps
. Доступ к следующим URL возвращает мой жёстко прописанные JSON:
http://localhost:8080/test-1.0-SNAPSHOT/resources
{"hello": 1337}
Теперь я изменить @Path
в моем ресурсе:
@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/
...
Я пробовал несколько комбинаций, но я не могу заставить его работать.
Привет, философия Jetty готова к установке webapp в порт. Таким образом, у вас будет webapp, упакованный как один JAR. Почему вы хотите hotdeploy, можете ли вы сказать нам, что именно вы хотите сделать, мне было бы легче помочь вам. Благодарю. – jeorfevre
Я создам новый вопрос с более подробной информацией. –
Не нужно создавать новый вопрос, просто отредактируйте его. –