Я хотел бы реализовать REST API с помощью Jersey 2, и я хотел бы иметь ресурсы разделены на интерфейсы и их реализацию, как, например:REST API с помощью Jersey 2
@Path("hello")
public interface HelloLogic {
@GET
@Produces("application/json")
public String hello();
}
public class HelloLogicResource implements HelloLogic {
public String hello() {
return "{\"reply\": \"Hello\"}";
}
}
у меня нет какого-либо везение получения ресурсы разоблачены. Для приветствия ресурса только что упомянул, я надеялся, что следующий будет достаточно:
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(new MyApplicationBinder());
}
}
public class MyApplicationBinder extends AbstractBinder {
@Override
protected void configure() {
bind(HelloLogic.class).to(HelloLogicResource.class);
}
}
web.xml:
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>stines.api.MyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
pom.xml:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.4.1</version>
</dependency>
Но при ударе
http://localhost:8080/hello
Получаю ответ 404:
Input будет весьма признателен :) Спасибо.
Новое открытие: работает с этим:
public class MyApplication extends ResourceConfig {
public MyApplication() {
registerClasses(HelloLogicResource.class);
}
}
Спасибо, но, кажется, не имеет никакого значения, к сожалению ... – Stine
Обновлено мой ответ , Я думаю, что вам также не нужен призыв к пакетам. – Alden
Кажется, что работает с более простым MyApplication, который я только что добавил в нижней части моего вопроса. Я получаю предупреждение «Компонент интерфейса класса stines.api.HelloLogic не может быть создан и будет проигнорирован», если я попытаюсь зарегистрировать HelloLogic. – Stine