2010-09-29 63 views
0

我正在嘗試爲Oracle XSQL Servlet編寫一些自定義序列化程序。我試圖讓我的兩個序列化器位於本地.ear中,因爲它們仍在開發和測試中,我不想傷害生產代碼。不過,我收到以下錯誤序列化程序未在XSQL配置文件中定義

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> 

我在想什麼?

回答

0

想通了。首先,我切換

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

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

這迫使它WEB-INF/classes目錄中的樣子。由於我沒有訪問權限編輯XSQLConfig,而且我的序列化程序是.war的本地化程序,所以我將它拋出一個小小的煩惱,我必須在測試時手動更改序列化程序。

之後,我得到一個「串行器無法加載錯誤」。

Apache POI ooxml需要xmlbeans。第二個問題是服務器上沒有找到xmlBeans,因此Serializer會悄然死亡,永遠不會被加載。出於某種原因,拋出的異常並沒有進入日誌。移動代碼後,主要是在創建工作簿的地方,我終於看到了這個異常。修正是將xmlbeans放入WEB-INF中的lib目錄中最後一個提示:即使文檔說它應該,我如何重寫xsql.config也不會工作。我通過故意在MyConfig.XML中編寫格式不正確的XML,發現了這一點。該應用程序仍然部署並且在應該失敗時運行良好。

如果有人知道如何覆蓋單個.ear的XSQLConfig.xml,我很樂意聽到它。

相關問題