0

私はRESTAPIで働いています。抽象型のXMLスキーマがあります。jsonをサポートするために@Mappedアノテーションを追加しました。

ただし、POST操作の実行中にJAXBバインディング例外が発生します。ただし、GET操作はJSONでは正常に機能します。この場合、何をする必要がありますか?

ジェティソンライブラリを使用しています。

JAX-RSの実装には、RESTEasyライブラリを使用しています。JAXBで生成されたクラスは、パッケージ「net.com.schema.services」内にあります。

@GET
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Path(ID_REGEX)
@RBAC(type = { CRUDEnum.READ }, capability = { "APICap" })
public JAXBElement<RESTOperationType> getCustomer(@PathParam("id") int customerId);

@POST
@Path(CUSTOMERS)
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Consumes({"application/xml","application/json"})
@RBAC(type = { CRUDEnum.CREATE }, capability = { "APICap" })
public JAXBElement<RESTOperationType> addCustomer(JAXBElement<RESTOperationType> restOprn)

上記のコードを試しましたが、POST操作のバインディング例外が発生しました。別のアプローチを試しました。

@POST
@Path(CUSTOMERS)
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Consumes({"application/xml","application/json"})
@RBAC(type = { CRUDEnum.CREATE }, capability = { "APICap" })
public JAXBElement<RESTOperationType> addCustomer(@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})JAXBElement<RESTOperationType> restOprn);

addCustomerメソッド内に@Mappedアノテーションを付けました。これで、バインディング例外が解決され、JSON入力からデータを読み取ろうとしたときにNullPointer例外が発生します。

4

0 に答える 0