XSSF / xlsx file from custom java broker to wso2 esb
So I am trying to create an xlsx file (xlsx is required as it is over 70,000 lines) and I keep getting the following error when deploying to wso2-esb, however when I run tests (in netbeans and during build mvn process) it works fine. I use SXSSF specifically, but the problem is XSSF related as it also occurs when I try non-streaming.
Please help me get this working in esb, I usually deploy via .car file.
I am using ESB 4.8.1 just for clarification
ERROR:
TID[-1234] [ESB] [2014-10-10 19:11:43,968] ERROR
{org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught exception
org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory.newInstance(Unknown
Source) org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:307)
org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:167)
org.apache.poi.xssf.streaming.SXSSFWorkbook.(SXSSFWorkbook.java:172)
org.apache.poi.xssf.streaming.SXSSFWorkbook.(SXSSFWorkbook.java:143)
org.apache.poi.xssf.streaming.SXSSFWorkbook.(SXSSFWorkbook.java:205)
com.circleblack.mediator.data.PerformanceExtract.mediate(PerformanceExtract.java:30)
org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
org.apache.synapse.rest.Resource.process(Resource.java:297)
org.apache.synapse.rest.API.process(API.java:341)
org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344)
org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.circleblack.mediator</groupId>
<artifactId>cb-esb-mediator</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>cb-esb-mediator-data</artifactId>
<packaging>bundle</packaging>
<description>Mediators for processing data.</description>
<properties>
<CApp.type>lib/synapse/mediator</CApp.type>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.axis2.wso2</groupId>
<artifactId>axis2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<!-- Tests -->
<dependency>
<groupId>com.circleblack.mediator</groupId>
<artifactId>cb-esb-mediator-test-mockito</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi.wso2</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9.0.wso2v2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>zip</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>cb-esb-mediator-data</Bundle-SymbolicName>
<Bundle-Name>cb-esb-mediator-data</Bundle-Name>
<Export-Package>com.circleblack.mediator.data</Export-Package>
<DynamicImport-Package>*</DynamicImport-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
java file
package com.circleblack.mediator.data;
import java.io.FileNotFoundException;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
import java.util.Date;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class PerformanceExtract extends AbstractMediator {
@Override
public boolean mediate(MessageContext context) {
System.out.println("Performance Extract Started perfExtact:");
OMElement performanceExportElement = (OMElement) context.getProperty("performanceExtract");
System.out.println("Performance Extract perfFile:");
String performanceExportElementFile = (String) context.getProperty("performanceExtractFile");
System.out.println(performanceExportElementFile);
System.out.println("Performance Extract Data Gathered!");
SXSSFWorkbook wb = new SXSSFWorkbook(100);
for (Iterator<?> i = performanceExportElement.getChildElements(); i.hasNext();) {
OMElement sheetElm = (OMElement) i.next();
//Setup Sheet
Sheet sheet = wb.createSheet(sheetElm.getLocalName());
//Setup headers
OMElement RowHeaders=sheetElm.getFirstElement();
if(RowHeaders!=null){
Row row = sheet.createRow(sheet.getLastRowNum());
int columnNum=0;
for (Iterator<?> q = RowHeaders.getChildElements(); q.hasNext();) {
OMElement RowHeader = (OMElement) q.next();
row.createCell(columnNum).setCellValue(RowHeader.getLocalName());
columnNum++;
}
//Setup Data
for (Iterator<?> z = sheetElm.getChildElements(); z.hasNext();) {
OMElement rowElm = (OMElement) z.next();
row = sheet.createRow(sheet.getLastRowNum()+1);
columnNum=0;
for (Iterator<?> q = rowElm.getChildElements(); q.hasNext();) {
OMElement cellElm = (OMElement) q.next();
row.createCell(columnNum).setCellValue(cellElm.getText());
columnNum++;
}
}
}
}
try {
//FileOutputStream fileOut = new FileOutputStream("/CBdrive/extracts/"+performanceExportElementFile);
FileOutputStream fileOut = new FileOutputStream("C:\\"+performanceExportElementFile);
wb.write(fileOut);
fileOut.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(PerformanceExtract.class.getName()).log(Level.SEVERE, "FileNotFoundException", ex);
} catch (IOException ex) {
Logger.getLogger(PerformanceExtract.class.getName()).log(Level.SEVERE, "IOException", ex);
}
wb.dispose();
return true;
}
}
Revision: More detailed error message:
[2014-10-12 19:56:34,235] ERROR - NativeWorkerPool Uncaught exception java.lang.ExceptionInInitializerError
at org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory.newInstance(Unknown Source) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:307)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:167)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:172)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:143)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:205)
at com.circleblack.mediator.data.PerformanceExtract.mediate(PerformanceExtract.java:30)
at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
at org.apache.synapse.rest.Resource.process(Resource.java:297)
at org.apache.synapse.rest.API.process(API.java:341)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.RuntimeException: Cannot load SchemaTypeSystem. Unable to load class with name schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder. Make sure the generated binary files are on the classpath.
at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:783)
at org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook.<clinit>(Unknown Source)
... 24 more
Caused by: java.lang.ClassNotFoundException: schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:769)
... 25 more
below is my parent pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.circleblack</groupId>
<artifactId>cb-wso2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>com.circleblack.mediator</groupId>
<artifactId>cb-esb-mediator</artifactId>
<packaging>pom</packaging>
<description>Custom mediators for ESB.</description>
<modules>
<module>cb-esb-mediator-data</module>
<module>cb-esb-mediator-rest</module>
<module>cb-esb-mediator-security</module>
<module>cb-esb-mediator-test-mockito</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<synapse.version>2.1.2-wso2v2</synapse.version>
<axis2.version>1.6.1.wso2v10</axis2.version>
<axiom.version>1.2.11.wso2v4</axiom.version>
<httpcomponents.version>4.1.0-wso2v1</httpcomponents.version>
<httpclient.version>3.1.0.wso2v2</httpclient.version>
<junit.version>4.11</junit.version>
<mockito.version>1.9.5</mockito.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
<version>${synapse.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.axis2.wso2</groupId>
<artifactId>axis2</artifactId>
<version>${axis2.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId>
<version>${axiom.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.wso2</groupId>
<artifactId>httpcore</artifactId>
<version>${httpcomponents.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-httpclient.wso2</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${httpclient.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
My top level wso2 pom
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.circleblack</groupId>
<artifactId>cb-wso2</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>cb-ds</module>
<module>cb-esb</module>
<module>cb-esb-mediator</module>
<module>cb-capp</module>
</modules>
<repositories>
<repository>
<releases>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<id>wso2-nexus</id>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<id>wso2-nexus</id>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
</pluginRepository>
</pluginRepositories>
<properties>
<wso2.plugin>2.0.4</wso2.plugin>
<artifact.types>service/rule=aar,lib/library/bundle=jar,synapse/message-processors=xml,synapse/proxy-service=xml,synapse/message-store=xml,carbon/application=car,registry/resource=zip,synapse/endpoint=xml,lib/dataservice/validator=jar,web/application=war,synapse/sequence=xml,synapse/configuration=xml,lib/registry/handlers=jar,synapse/task=xml,webapp/jaxws=war,synapse/api=xml,cep/bucket=xml,bpel/workflow=zip,lib/registry/filter=jar,service/dataservice=dbs,synapse/local-entry=xml,synapse/priority-executor=xml,synapse/template=xml,synapse/event-source=xml,lib/carbon/ui=jar,service/axis2=aar,wso2/gadget=dar,lib/synapse/mediator=jar</artifact.types>
</properties>
</project>
Do you need to specifically include dependencies somewhere outside of mediators? I also included them in the basic carbon utility, but it didn't seem to have any effect.
source to share
With ESB 4.8.1 class
schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder
can be found in ESB_HOME / repository / components / plugins / poi_ooxml_3.9.0.wso2v1
I don't have a parent POM, so I updated my POM (see below) to package the class mediator and try ESB (4.8.1) and I have no errors, I can see.
Performance Extract Started perfExtact:
Performance Extract perfFile:
mytest.txt
Performance Extract Data Gathered!
in std output
Nota: with ESB 4.9.0 (SNAPSHOT) I had the same error as yours and need to add poi-ooxml-3.9.0.wso2v1.jar to the repository / components / lib: it works like this, but I don't know if this is a good idea because you can find poi-ooxml_3.9.0.wso2v2.jar by default in repository / components / plugins
POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.circleblack.mediator</groupId>
<artifactId>cb-esb-mediator-data</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<description>Mediators for processing data.</description>
<properties>
<CApp.type>lib/synapse/mediator</CApp.type>
</properties>
<repositories>
<repository>
<id>wso2-maven2-repository</id>
<url>http://dist.wso2.org/maven2</url>
</repository>
<repository>
<id>apache-Incubating-repo</id>
<name>Maven Incubating Repository</name>
<url>http://people.apache.org/repo/m2-incubating-repository</url>
</repository>
<repository>
<id>apache-maven2-repo</id>
<name>Apache Maven2 Repository</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
<version>2.1.2-wso2v1</version>
</dependency>
<dependency>
<groupId>org.apache.axis2.wso2</groupId>
<artifactId>axis2</artifactId>
<version>1.6.1.wso2v10</version>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId>
<version>1.2.11.wso2v4</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.10.1</version>
<scope>compile</scope>
</dependency>
<!-- Tests -->
<!--dependency>
<groupId>com.circleblack.mediator</groupId>
<artifactId>cb-esb-mediator-test-mockito</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency-->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi.wso2</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9.0.wso2v2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>zip</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>cb-esb-mediator-data</Bundle-SymbolicName>
<Bundle-Name>cb-esb-mediator-data</Bundle-Name>
<Export-Package>com.circleblack.mediator.data.*</Export-Package>
<DynamicImport-Package>*</DynamicImport-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
source to share