問題

AEM 6.2 SP1 CFP9 にアップグレードすると、Forms アドオンをインストールした後に Granite Apache POI が失敗します。

具体的には、SXSSFWorkbook クラスのメソッドは、次のような例外で失敗する場合があります。

Exception : org.apache.xmlbeans.impl.schema.SchemaTypeImpl cannot be cast to org.apache.xmlbeans.impl.values.TypeStoreUserFactory java.lang.ClassCastException: org.apache.xmlbeans.impl.schema.SchemaTypeImpl cannot be cast to org.apache.xmlbeans.impl.values.TypeStoreUserFactory at org.apache.xmlbeans.impl.store.Xobj.setStableType(Xobj.java:1402) at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2500) at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2485) at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:636) at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:612) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.newInstance(SchemaTypeLoaderBase.java:198) at org.apache.poi.POIXMLTypeLoader.newInstance(POIXMLTypeLoader.java:112) at org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory.newInstance(Unknown Source) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:446) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:244) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:235) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:240) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:210) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:185) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:271) at testpoi.servlets.TestPOIServlet.doGet(TestPOIServlet.java:28)

例えば、次のキャストを実行すると、上記のスタックトレースがスローされます。

SXSSFWorkbook w = new SXSSFWorkbook(1000);

環境

AEM 6.x with Forms Package installed

-> AEM 6.2 SP1 with CFP9 between CFP15 installed.

-> AEM 6.3

-> AEM 6.4

原因

この問題は、Apache POI ライブラリ(com.adobe.granite.poi)がクラス「org.apache.xmlbeans.impl を読み込んでいるために発生します。*」が Forms(Apache ServiceMix :: Bundles :: xmlbeans (org.apache.servicemix.bundles.xmlbeans)によって追加されたバンドルから発生しているため、一部のクラスは POI バンドル自体から使用されています。

両方のバンドルのパッケージは、異なるバージョンの「org.apache.xmlbeans.impl.*」クラスです。Forms パッケージは 2.4.0 バージョンであるのに対し、granite.poi パッケージは同じクラスの 2.0.6 バージョンです。

選択したクラスのバージョンが異なると、キャスト例外が発生します。

解決策

一時的なソリューションは、「Apache ServiceMix :: Bundles :: xmlbeansorg.apache.servicemix.bundles.xmlbeans Version 2.4.0.5」をアンインストールすることです。

このバンドルは J2EE コネクタで使用されるため、AEM Forms の OSGi インスタンスを使用している場合は安全に削除できます。

 

AEM Forms の J2EE インスタンスを使用している場合:

AEM 6.2 では、この問題は CFP16 から始まり、AEM 6.5 の次のメジャーリリースでも同様に対処される予定です。

6.3 および 6.4 バージョンでの修正については、アドビテクニカルサポートに連絡し、バグ参照 CQ-4244778 の修正をリクエストしてください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー