CXFcxf-codegen-plugin
を使用して WSDL ファイルから生成されたオブジェクトを JSON 文字列に変換する必要があります。それに対する解決策を見つけることができて幸運ではありません。
私が得た限りでは、CXF JSONProvider の Spring 構成を作成しました。
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true"/>
<property name="dropCollectionWrapperElement" value="false"/>
<property name="serializeAsArray" value="true"/>
<property name="ignoreNamespaces" value="true"/>
</bean>
それを私の豆に注入し、今私は使用しようとしています:
try {
StringWriter writer = new StringWriter();
jsonProvider.writeTo(
evaluationType,
EvaluationType.class,
new Annotation[]{},
MediaType.APPLICATION_JSON_TYPE,
null,
new StringOutputStream(writer));
return writer.toString();
} catch (IOException e) {
LOGGER.error("e", e);
return "";
}
問題は、このメソッドにどのような注釈を付ける必要があるかということです。それに関するドキュメントはありません。私は得ています:
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
com.company.test.evaluation.evaluation.EvaluationImpl$1 is a non-static inner class, and JAXB can't handle those.
this problem is related to the following location:
at com.company.test.evaluation.EvaluationImpl$1
これEvaluationImpl
は、このメソッドを呼び出すクラスです。このメソッドに提供する注釈の種類を教えてください。それとも、CXF JSONProviderを使用してこれを行う他の方法がありますか?