Problema
Atualizando para o AEM 6.2 SP1 CFP9, o Granite Apache POI falhará depois que você instalar o complemento de Formulários.
Mais especificamente, os métodos da classe SXSSFWorkbook podem falhar com exceções semelhantes à seguinte:
Exceção: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) em org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:235) em org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:240) em org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:210) em org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:185) em org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:271) em testpoi.servlets.TestPOIServlet.doGet (TestPOIServlet.java:28) |
O rastreamento de pilha acima é lançado quando você executa o seguinte elenco, por exemplo:
SXSSFWorkbook w = new SXSSFWorkbook (1000); |
Ambiente
AEM 6.x com o Pacote de Formulários instalado
-> AEM 6.2 SP1 com CFP9 entre o CFP15 instalado.
-> AEM 6.3
-> AEM 6.4
Causa
O problema ocorre porque a biblioteca do Apache POI (com.adobe.granite.poi) está importando algumas classes "org.apache.xmlbeans.impl.*"de um pacote adicionado por Formulários (Apache ServiceMix :: Bundles :: xmlbeans (org.apache.servicemix.bundles.xmlbeans) e algumas classes estão sendo usadas a partir do próprio pacote POI.
Ambos pacotes têm versões diferentes de "org.apache.xmlbeans.impl.*" classes: Pacotes de Formulários versão 2.4.0 enquanto pacotes granite.poi versão 2.0.6 do mesmo.
Diferentes versões da classe sendo selecionadas resultam na Cast Exception.
Resolução
A solução temporária é desinstalar o "Apache ServiceMix :: Bundles :: xmlbeansorg.apache.servicemix.bundles.xmlbeans Versão 2.4.0.5".
Esse pacote é usado no J2EE Connector e, portanto, pode ser removido com segurança, caso você esteja usando uma instância OSGi de Formulários AEM.
Caso você esteja usando uma instância J2EE de Formulários AEM:
No AEM 6.2, a questão é abordada a partir do CFP16 , e será abordado também no próximo grande lançamento do AEM: 6.5.
Para uma correção nas versões 6.3 e 6.4, entre em contato com o Suporte Técnico da Adobe e solicite uma correção para a referência de erro CQ-4244778.