0

私はXMLBeansを初めて使用し、それを使用してaxis2Webサービスの一部としてXMLドキュメントを作成しようとしています。コードを標準のJavaアプリケーションまたは標準のサーブレットとして実行すると、XMLが正しく生成されます。

<?xml version="1.0" encoding="UTF-8"?>
<c:BroadsoftDocument protocol="OCI" xmlns:c="C">
<sessionId>000000001</sessionId>
<command xsi:type="AuthenticationRequest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>admin</userId></command>
</c:BroadsoftDocument>

ただし、サーブレットのAxis2とTomcatでまったく同じコードを実行すると、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<c:BroadsoftDocument protocol="OCI" xmlns:c="C">
<sessionId>000000001</sessionId>
<command>
<userId>admin</userId></command>
</c:BroadsoftDocument>

もちろん、これは有効ではありません。コードがTomcatで実行されると、「コマンド」要素のxsi:typeが削除されます。

Axis2で実行している場合にのみこのタイプの問題を引き起こす可能性がある、私が間違っている可能性があることについて誰かが提案していますか?最初はTomcatの問題だと思っていましたが、汎用サーブレットを作成してまったく同じコードを実行した後は、問題はありません。XMLBeansのXMLOptionsを試してみましたが、問題を解決できなかったようです。私が現在使用しているオプションは次のとおりです。

xmlOptions = new XmlOptions();
xmlOptions.setCharacterEncoding("UTF-8");
xmlOptions.setUseDefaultNamespace();
xmlOptions.setSaveAggressiveNamespaces();
xmlOptions.setSavePrettyPrint();
4

1 に答える 1

0

問題は、Axis2 が使用するクラス ローダーの順序にある​​ことがわかりました。これにはパッチが適用されており、機能は次のとおりです。

http://marc2.theaimsgroup.com/?l=axis-cvs&m=115946726426905&w=3

簡単に言うと、この問題を解決するには、Axis2 プロジェクトの「services.xml」を編集して、以下を追加する必要があります。

<parameter name="ServiceTCCL">composite</parameter>
于 2010-02-25T22:59:46.713 に答える