1

ジャージで記述されたRESTWebサービスに取り組んでおり、CDATAセクションを含むXMLを出力しようとしています。JAXBのリファレンス実装がそれをサポートしていないことを理解しているので、EclipseLinkのMOXyをダウンロードし、@XmlCDATAアノテーションを機能させようとしています。

私のJAXBマップされたBeanは次のようになります

package com.me.entities;

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD)
public class MyBean {

    @XmlAttribute
    private URI thumbnail;

    @XmlElement(name="longdescription") @XmlCDATA
    private String description;

    public MyBean() { }

    public final String getDescription() { return description; }

    public final void setDescription(String d) { this.description = d; }
}

そして、クラスファイルと一緒にjaxb.propertiesファイルがあります。com/me/entitiesプロパティファイルには

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

初期化。ファクトリクラス名をナンセンスに置き換えるとアプリが機能しなくなるため、正常に読み込まれると確信しています。また、自分でJAXBContextを作成するファイルを明示的にマーシャリングすることは問題なく機能するため、問題はジャージに関連しているようです。これによると、私のセットアップは問題ありませんが、ジャージリソースがMyBeanのインスタンスを返す場合

...
@GET @Produces(MediaType.TEXT_XML) 
public MyBean getMyBean() {
    MyBean b = new MyBean();
    b.setDescription("Some blurb plenty of invalid chars like <<< && >>>");

    return b;
 }

返されるものにはCDATAが含まれていませんが、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<info><longdescription>Some blurb plenty of invalid chars like &lt;&lt;&lt; &amp;&amp; >>></longdescription></info>

私は何が間違っているのですか?

4

2 に答える 2

2

問題はアプリケーションサーバーにあるようです。これは、開発モードのWebLogic 10.3.5で実行しています。これには、多くの一般的なライブラリがプリインストールされており、デフォルトの構成では、webappWEB-INF/libフォルダにデプロイされているライブラリよりも優先されます。

これを修正するには、weblogic固有のアプリケーションの説明が必要です。オプションを含むweblogic.xmlファイルを内部に作成するだけです。私が使用したファイルはこれです:WEB-INFprefer-web-inf-classes

<?xml version='1.0' standalone='yes'?>
<weblogic-web-app>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
</weblogic-web-app>

どのライブラリが問題だったのかはまだわかりませんが、この回答を自由に編集できることは誰でも知っています。

于 2011-07-26T08:38:11.137 に答える
0

Jaxb拡張機能をダウンロードしてください:これは、Jaxb用のEclipselinkオープンソース拡張機能です。jarファイルを取得します。eclipselink.jarをプロジェクトライブラリにコピーします。

http://www.eclipse.org/eclipselink/downloads/
EclipseLink 2.4.1 Installer Zip (37 MB)

そして、次の例を参照してください。

http://theopentutorials.com/tutorials/java/jaxb/jaxb-marshalling-and-unmarshalling-cdata-block-using-eclipselink-moxy/

格好良い!

于 2013-05-28T14:45:04.247 に答える