Джерси Нет провайдера WebApplication присутствует при добавлении jersey- *
У меня есть простое приложение Spring и Jersey, которое отлично работает для использования запросов через простой ресурс. Однако я хотел бы вернуть ответ JSON, содержащий простую сериализацию JSON для объекта. Для этого я добавил зависимость maven для jersey-json
. Однако, как только я добавляю эту зависимость, я получаю эту ошибку при запуске сервера:
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at
com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at
com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
Я не совсем понимаю, что такое провайдер, но я уверен, что он должен быть найден по умолчанию.
Для полноты, здесь мой ресурс:
@Path("/scan")
@Resource
@Component
public class ScanResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{barcode}")
public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){
..snip..
return results;
}
}
Объект сканирования - это простой объект Entity Bean.
Зависимость mvn:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
Кто-нибудь знает, почему я могу получить исключение No WebApplication provider is present
? Любые мысли о том, как я могу это решить?
Спасибо
Ответы
Ответ 1
Вам нужно иметь jersey-server jar на вашем пути к классу. И вам нужно убедиться, что все ваши баночки из одной и той же версии, Джерси runtime не сможет использовать предоставленные классы в противном случае.
Дополнительно (скорее всего, это не актуально здесь, но..) произошла недавняя смена структуры модуля - зависимости сервлетов были разделены на новые модули. Поэтому, если вы используете сервлеты, вы можете зависеть от jersey-servlet (который зависит от jersey-сервера).
Ответ 2
У меня также была эта проблема. Проблема была решена с помощью той же версии для зависимостей "jersey-json" и "jersey-servlet" maven.
Пример:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.13</version>
</dependency>