0

Oracle XSQL サーブレット用のカスタム シリアライザを作成しようとしています。2 つのシリアライザーをローカルの .ear 内に保持しようとしています。これらはまだ開発およびテスト中であり、製品コードを傷つけたくないからです。ただし、次のエラーが表示されます

XML-25021: シリアライザXLSv2がXSQL構成ファイルで定義されていません

.war/WEB-INF のディレクトリ リストは次のようになります。

classes/
        scott/
              XLSv2Serializer.class
              XLSXSerializer.class
lib/
    <empty>
web.xml
MyConfig.xml

私の WEB-INF/web.xml は次のようになります。

<web-app>
  <display-name>demoSerializer</display-name>
  <distributable />
    <init-param>
        <param-name>xsql.config</param-name>
        <param-value>MyConfig.xml</param-value>
        <description>use my dev config file</description>
    </init-param>
</web-app>

MyConfig.XML は次のようになります。

<XSQLConfig>
  <serializerdefs>
    <serializer>
      <name>XLSv2</name>
      <class>scott.XLSv2Serializer</class>
    </serializer>
    <serializer>
      <name>XLSX</name>
      <class>scott.XLSXSerializer</class>
    </serializer>
  </serializerdefs>
</XSQLConfig>

何が欠けていますか?

4

1 に答える 1

0

理解した。まず、乗り換えました

<?xml-stylesheet serializer="{@serializer}"?>

<?xml-stylesheet serializer="java:scott.XLSXSerializer"?>

これにより、WEB-INF/classes 内を検索するようになりました。XSQLConfig を編集するアクセス権がなく、シリアライザーが .war に対してローカルであるため、テスト時に手動でシリアライザーを変更する必要があるという小さな煩わしさを投げかけています。

この後、「シリアライザーをロードできませんでした」というエラーが発生しました。

Apache POI ooxml には xmlbeans が必要です。2 つ目の問題は、サーバーで xmlBeans が見つからなかったため、シリアライザーが静かに終了し、ロードされないことでした。何らかの理由で、スローされていた例外がログに記録されませんでした。主にワークブックが作成されている場所でコードを移動した後、最終的に例外を確認しました。修正では、WEB-INF/ 内の lib ディレクトリに xmlbeans を配置していました。

最後に補足: xsql.config をオーバーライドする方法は、ドキュメントにそうあるべきだと書かれていても、まったく機能しませんでした。これは、故意に MyConfig.XML に不正な形式の XML を記述して発見したものです。アプリはまだデプロイされており、失敗するはずだったときに正常に実行されました。

単一の .ear に対して XSQLConfig.xml をオーバーライドする方法を誰かが知っている場合は、ぜひ教えてください。

于 2010-09-30T20:17:57.407 に答える