在2.1-M4以上的Restlet版本上的Java序列化问题

时间:2014-02-26 17:10:11

标签: java android serialization restlet

我正在尝试运行这里提供的非常简单的Restlet示例应用http://restlet.org/learn/guide/2.2/introduction/first-steps/first-application

我正在尝试在Android设备上运行客户端,但是我收到以下错误:

Unable to convert a [application/json,UTF-8] representation into an object of class org.restlet.example.common.Contact
java.io.IOException: Unable to create the Object representation
org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:291)
org.restlet.service.ConverterService.toObject(ConverterService.java:170)
org.restlet.resource.Resource.toObject(Resource.java:828)
org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:240)
$Proxy7.retrieve(Native Method)
org.restlet.example.serialisation.android.activity.ContactActivity$2.run(ContactActivity.java:142)
java.lang.Thread.run(Thread.java:1096)
java.lang.IllegalArgumentException: The serialized representation must have this media type: application/x-java-serialized-object or this one: application/x-java-serialized-object+xml
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:204)
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:133)
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:114)
org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:288)

使这款应用运行的唯一方法是使用Restlet 2.1-M4版本。我尝试使用2.2-RC2,甚至使用“稳定的”2.1.7 Restlet版本。

我知道该应用程序已经过“Restlet Framework 2.1 Milestone 4”的测试,但对我来说听起来太奇怪了,2.1.7这样的后续稳定版本就像这样一个简单的例子而疯狂!

应用程序本身非常简单,我无法看到问题可能依赖的地方,除了restlet库本身的“错误”。 我能想象的另一个选择是,在重新安装2.1-m4之后,为了让java序列化工作正常,必须在客户端和/或2.1-m4不需要的服务器中添加一些额外的代码片段

我们将非常感谢任何意见或建议。

最佳,

Raffaele Gravina

1 个答案:

答案 0 :(得分:-1)

由于潜在的安全问题,我们必须禁用默认转换器,如下所述: https://github.com/restlet/restlet-framework-java/wiki/XEE-security-enhancements

你应该将Jackson扩展添加到你的类路径(org.restlet.ext.jackson.jar和依赖项)。希望这会有所帮助。