【问题标题】:Jersey client in applet doesn't parse JSON小程序中的 Jersey 客户端不解析 JSON
【发布时间】:2013-08-14 15:15:26
【问题描述】:

我有一个简单的应用程序,可以用作小程序和独立应用程序。 它向 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&lt;City&gt;。 当我在发送小程序(在 html 页面或 appletviewer 中)请求时运行我的 jar 文件时,会收到响应,但它无法反序列化对 List&lt;City&gt; 说的响应

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 添加到 Jersey 提供程序列表中,尝试仅反序列化到 String、City[] - 它总是说从 applet 运行时找不到合适的消息正文阅读器。作为桌面应用程序运行时一切正常。

Applet 肯定会加载 jersey-bundle jar,因为我在服务器访问日志中看到它并发送了请求,但它看起来加载不正确(也许它在加载时忽略 jersey-bundle jar 的清单,我没有'不知道)。只有在从小程序执行代码时才会出现问题。

谁能帮帮我?

【问题讨论】:

    标签: java json applet jersey-client


    【解决方案1】:

    问题在于 Jersey 读取属性并使用反射,并且所有这些操作都被禁止用于不受信任的小程序。这并不明显,因为 Java 控制台中没有错误。我必须将解析代码放到 try/catch 块中,捕获任何 Throwable 并将其打印到控制台,然后我才能看到有关安全限制的错误。

    为了解决这个问题,我必须对我的 applet jar 文件、jersey jar 文件和 Jersey 使用的所有其他库进行自签名

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      相关资源
      最近更新 更多