Итак, я пытаюсь создать файл xlsx (xlsx необходим, поскольку он содержит более 70 000 строк), и я продолжаю получать следующую ошибку при развертывании на wso2 esb, однако, когда я запускаю тесты (в netbeans и во время процесса сборки mvn), он работает отлично. Я специально использую SXSSF, однако проблема связана с XSSF, поскольку она также возникает, когда я пытаюсь без потоковой передачи.
Пожалуйста, помогите мне заставить это работать в esb, я обычно развертываю через файл .car.
Я использую ESB 4.8.1 только для пояснения.
ОШИБКА:
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)
пом:
<?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-файл
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;
}
}
EDITED: Более подробное сообщение об ошибке:
[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
ниже мой родительский помпон:
<?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>
Мой верхний уровень 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>
Нужно ли мне специально включать зависимости где-то за пределами pom посредников? Я также включил их в основное приложение для углерода, но, похоже, это не имело значения.