Hello.
I'm a Tika newbie, and running into an issue with Tika on Glassfish.
I'm using Tika to extract metadata from documents uploaded to a JSF 2.0 Web
application using Prime Faces p:fileupload (Prime Faces 3.5) and running on
Glassfish 3.2.2. Here is the essentials of my code:
private void extract(InputStream stream, Parser parser, Metadata metadata) {
try {
parser.parse(stream, new BodyContentHandler(), metadata, new
ParseContext());
} catch (IOException | SAXException | TikaException e) {
LOGGER.debug("Exception parsing file for metadata: {}", e);
}
}
Passing in an AutoDetectParser with the InputStream from the fileupload works
fine for MS Office OOXML (.docx, .xlsx, etc.) documents in JUnit tests, but
fails when I run it in the Glassfish container with the following stack trace:
Caused by: java.lang.NoClassDefFoundError: org/dom4j/Namespace
at
org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.<clinit>(PackagePropertiesUnmarshaller.java:49)
~[na:3.6]
at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:149) ~[na:3.6]
at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:136) ~[na:3.6]
at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:54) ~[na:3.6]
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:81) ~[na:3.6]
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:220) ~[na:3.6]
at
org.apache.poi.extractor.ExtractorFactory.createExtractor(ExtractorFactory.java:86)
~[na:3.6]
at
org.apache.tika.parser.microsoft.ooxml.OOXMLExtractorFactory.parse(OOXMLExtractorFactory.java:53)
~[na:na]
at
org.apache.tika.parser.microsoft.ooxml.OOXMLParser.parse(OOXMLParser.java:69)
~[na:na]
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:132)
~[na:na]
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:99)
~[na:na]
at
com.spillman.fileupload.FileMetadataExtractor.extract(FileMetadataExtractor.java:220)
~[FileMetadataExtractor.class:na]
...
The tika-core-0.7, tika-parsers-0.7, tika-app-0.8, poi-3.6, poi-ooxml-3.6, and
dom4j-1.6.1 jars are all in the build path and marked for export. I've even
gone so far as to put the jars in the Glassfish endorsed directory. Web
research hasn't produced anything directly related, but I did find a few
references to this exception in CF related to class loader conflicts that I
wasn't able extrapolate to our Glassfish implementation (Which may be a lack of
understanding on my part). What do I need to configure or change to get this to
work on Glassfish?
Thanks in advance,
Tad
TAD B WIMMER | Spillman Technologies | JAVA DEVELOPER - HOSTED SOLUTIONS
Toll Free 800.860.8026 ext. 1747 | Phone 801.902.1747 | Fax 801.902.1210
4625 Lake Park Blvd., Salt Lake City, UT 84120
[email protected]<mailto:[email protected]> |
www.spillman.com<http://www.spillman.com/> |
www.citadex.com<http://www.citadex.com/com/>