質問

一部のコンテンツをインポートするためのWebサービスAPIを介してAlfrescoコンテンツサーバーにアクセスするためにJavaを使用しています。コンテンツには、いくつかのNamedValueプロパティがUTF-8(キリル文字)文字列に設定されている必要があります。 Saxパーサーの例外が引き続き発生します:

org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document.

コードは次のようになります。

NamedValue[] namedValueProperties = new NamedValue[2];

namedValueProperties[0] = Utils.createNamedValue(Constants.PROP_NAME, name );
namedValueProperties[1] = Utils.createNamedValue("{my.custom.model}myProperty", cyrillicString);

CMLCreate create = new CMLCreate("1", parentReference, null, null, null, documentType, namedValueProperties);
CML cml = new CML();
cml.setCreate(new CMLCreate[]{create});
UpdateResult[] results = null;

try {
   results = WebServiceFactory.getRepositoryService().update(cml);
} catch (...)
    Here comes the "org.xml.sax.SAXParseException"
} 

この問題を解決する方法を知っている人はいますか?

役に立ちましたか?

解決

問題は、使用したalfresco-web-service-client.jarライブラリが2.9Bディストリビューション(2.9Bコミュニティコンテンツサーバーにアクセスしています)、依存関係ライブラリbcprov-jdk15-136.jarおよびxmlsec-1.4のものであったことです。 0.jarは適切ではありませんでした(2.1 distから古いままです)。 2.9Bディストリビューションと一緒にデプロイされるbcprov-jdk15-137.jarおよびxmlsec-1.4.1.jarを使用する必要がありました。

他のヒント

それを回避する最も簡単な方法は、たとえば escapeXml をJakarta Commonsから取得するか、文字列全体がXMLエンティティに変換されます(十分でない場合)。ただし、長期的にはAlfrescoを修正する必要があるため、チケットを開くことも適切な選択です。

これがAlfrescoのバグであるかどうかを判断することは、あなたが永続化しようとしているデータを見ることなく、少し難しいです。どのバージョンのAlfrescoを使用していますか? Alfrescoの問題追跡システムでこのバグを見つけました。具体的には、これは2.1コミュニティでのものであり、UTF-8以外のエンコーディングに問題があることを示唆しているようです。

この問題をデバッグするためにできることの1つは、Alfrescoの組み込みJava(サーバー側)APIを使用して、同じデータを永続化しようとする小さなテストを作成し、まだエラーが発生するかどうかを確認することです(おそらくそうではないでしょう) SAXParseExceptionを実行した場合)。エラーが発生しない場合は、AlfrescoのWebサービスAPIにバグがある可能性があります(残念ながら、組み込みJavaまたはREST APIほどサポートされていません)。コメントを追加することもできます。前述のバグレポート、または独自のファイル。それでも組み込みAPIでエラーが発生する場合は、問題のコードまたはコードである可能性があります。

少なくとも少し役に立ったと思います!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top