У меня есть простое приложение, которое можно использовать как в виде апплета, так и в качестве отдельного приложения. Он отправляет запрос в службу REST и пытается отобразить результат, который является List<City>
.
Код класса города выглядит следующим образом:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class City implements Serializable {
private Integer cityId;
private String name;
public Integer getCityId() {
return cityId;
}
public void setCityId(Integer cityId) {
this.cityId = cityId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Он использует jersey-bundle-1.17 для отправки запроса и получения ответа.
Код для отправки запроса и получения ответа:
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client c = Client.create(clientConfig);
List<City> result = c.resource(resource url here).get(new GenericType<java.util.List<City>>(){});
После создания приложения у меня есть два файла jar - MyJar.jar с моим приложением и jersey-bundle-1.17.jar. Путь класса к майке указан в манифесте MyJar.jar.
Когда я запускаю свой файл jar как отдельное приложение (java -jar MyJar.jar), все в порядке, запрос отправляется, а ответ получен и десериализован в файл List<City>
. Когда я запускаю свой файл jar в качестве апплета (в html-странице или апплете), запрос отправляется, ответ получен, но он не может десериализовать ответ на List<City>
высказывание
A message body reader for Java class java.util.List, and Java type java.util.List<City>, and MIME media type application/json was not found
Я попытался добавить JacksonJsonProvider.class в список поставщиков Джерси, попытался десериализовать только в String, в City [] - он всегда говорит, что соответствующий читатель тела сообщения не найден при запуске из апплета. И все отлично работает при запуске в качестве настольного приложения.
Апплет определенно загружает jersy-bundle jar, как я вижу в журналах доступа к серверу, и запрос отправляется, но выглядит так, что он загружается неправильно (возможно, он игнорирует манифест jersy-bundle jar при загрузке, я не знаю) . Проблема возникает только тогда, когда код выполняется из апплета.
Кто-нибудь может мне помочь?