Я работаю над JAX-RS с apache-cxf в качестве реализации. У меня есть служба POST, и я получаю следующую ошибку 400
при десортировке объекта JSON в Java without
@XMLRootElement.
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Customer")
Класс ресурса:
@POST
@Path("/create")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response createCustomer(Customer customer) throws Exception {
------
-------
}
Объект JAXB: в нем нет @XMLRootElement.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Customer", propOrder = {
"id",
"effectiveDate",
"customerType",
"customerName",
---
})
public class Customer extends ObjectBase implements Serializable
{
}
Контекст приложения:
<jaxrs:server id="restContainer" address="/">
<jaxrs:serviceBeans>
<ref bean="customerResource"/>
</jaxrs:serviceBeans>
</jaxrs:server>
JSON
{
"Customer":
{
"Id": null,
"ExternalKey": [
{
"NaturalKey": "NaturalKey0",
"KeyName": "KeyName0",
"SourceSystem": "XYZ"
},
{
"NaturalKey": "NaturalKey1",
"KeyName": "KeyName1",
"SourceSystem": "Sys"
}
],
"MetaData": {
"ObjectVersion": "50",
"ObjectState": "Synchronized",
"CreatedTime": "2006-05-04T18:13:51.0",
"ModifiedBy": "ModifiedBy0",
"ModifiedTime": "2006-05-04T18:13:51.0",
"Verified": "false"
},
"EffectiveDate": "2006-05-04",
"CustomerType": "ABC",
"CustomerName": "CustomerName0",
"CustomerTag": [
{
"Key": "Customer Number",
"Value": "Value0"
},
{
"Key": "Customer EID",
"Value": "Value1"
}
]
}
}
Я попытался добавить Jettison в качестве поставщика, но неудачно