我有一个来自 Recurly 服务的传入 xml,其中包含事务列表。有时它是空的,看起来像这样:
<transactions type="array">
</transactions>
Run Code Online (Sandbox Code Playgroud)
我需要使用杰克逊反序列化它。我尝试过下一个映射
@XmlRootElement(name = "transactions")
public class TransactionObjectListResponse extends ArrayList<TransactionObjectResponse> {
}
Run Code Online (Sandbox Code Playgroud)
其中每个事务的 TransactionObjectResponse 类。它适用于非空集合,但在没有事务到来时会失败。出现下一条消息:
java.lang.IllegalStateException: Missing name, in state: END_ARRAY
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.getCurrentName(FromXmlParser.java:310)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:289)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:157)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:123)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:230)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:207)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
Run Code Online (Sandbox Code Playgroud)
我直接使用XmlMapper,
xmlMapper.readValue(responseXml, TransactionObjectListResponse.class);
Run Code Online (Sandbox Code Playgroud)
响应实体结构并不严格,任何帮助都会被应用。谢谢。
我使用spring-social-facebook与Graph API进行交互(1.0.3.RELEASE,如果它是metter).
我找不到任何操作来检索配置文件的图像网址.我发现只有返回字节数组的操作,它们对于实现来说不是很方便.
Spring Social中是否存在检索图像URL的任何操作?
如果没有,这有什么"整洁"的解决方法吗?
谢谢!
在工件部署的最开始,Wildfly 会验证 persistence.xml 中描述的所有持久性单元。负责类之一org.jboss.as.jpa.processor.PersistenceUnitServiceHandler来自wildfly-jpa图书馆。
主要问题:是否可以以某种方式禁用此验证?或者只是将持久性单元标记为忽略?
详细说明根本原因:
我们将构建无环境的工件。所以persistence.xml里面的配置会在一开始就被java代码覆盖。默认配置是虚拟的,看起来像这样:
<persistence-unit name="cassandra_unit" transaction-type="RESOURCE_LOCAL">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<class>sample.model.Manager</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="kundera.nodes" value="localhost"/>
<property name="kundera.port" value="9165"/>
<property name="kundera.username" value="test"/>
<property name="kundera.password" value="test"/>
<property name="kundera.keyspace" value="keyspace"/>
<property name="kundera.dialect" value="cassandra"/>
<property name="kundera.client.lookup.class" value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory"/>
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
但是 wildfly 会验证持久性单元并调用KunderaPersistence.createContainerEntityManagerFactory。昆德拉反过来检查与 localhost:9165 的连接并失败。所以部署也失败了。
任何解决方法都是可以接受的。
java ×2
deployment ×1
facebook ×1
jackson ×1
jpa ×1
kundera ×1
persistence ×1
spring ×1
wildfly ×1
xml ×1