satyakumar putcha
satyakumar putcha

Reputation: 33

Apache POI 5.2.2 is not working on weblogic server14.1

I am working on uplift project to uplift Apache 412 to latest Apache POI 5.2.2 version. Everything is working fine on local standalone program in Netbeans IDE 12.2. But when I move it to server WebLogic 14C that run on Java 8, its not working. Also it does not give any errors in the logs.

When I try to export to Excel in my Jdeveloper, I am getting the error "<incident 305 created with problem key "DFW-99998 [java.lang.NoSuchMethodError]" with Apache POI 522 JARS. The same java program is working fine in Apache POI 4.1.2 API.

I enabled verbose classloading in Jdeveloper but it does not give any POI specific errors.

-verbose:class -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:-DisplayVMOutput -XX:LogFile=C:\Record.log

I am using the below Apache POI JARS

commons-collections4-4.4.jar commons-compress-1.21.jar
commons-io-2.11.0.jar commons-math3-3.6.1.jar log4j-api-2.17.2.jar
log4j-core-2.17.2.jar poi-5.2.2.jar poi-ooxml-5.2.2.jar
poi-ooxml-full-5.2.2.jar SparseBitSet-1.2.jar xmlbeans-5.0.3.jar

In weblgic.xml I have below Configuration.

   <prefer-application-packages>
     <package-name>org.apache.commons.collections4.*</package-name>
     <package-name>org.apache.commons.compress.*</package-name>
     <package-name>org.apache.poi.*</package-name>
     <package-name>org.apache.xmlbeans.*</package-name>
     <package-name>org.openxmlformats.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLCONFIG.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLLANG.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLTOOLS.*</package-name>
  </prefer-application-packages>
  <prefer-application-resources>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name>
  </prefer-application-resources>

Do i need any add any configuration in weblogic.xml file ? please let me know. how to get more stacktrace and error information when the API fails. When i debugged this issue,below line fails and i am getting NoSuchMethodError.

  **workbook = new SXSSFWorkbook(new XSSFWorkbook(), 100, true, true); - this line fails.
  workbook.setCompressTempFiles(true);**

Upvotes: 2

Views: 2482

Answers (2)

Harsh
Harsh

Reputation: 21

Thanks, @kevin herein is my response to the above similar problem struggled for hrs to fix this.
Create your weblogic.xml file inside WEB-INF if not present and add the below code snippet

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>org.apache.commons.*</package-name>
            <package-name>org.apache.poi.*</package-name>
            <package-name>org.apache.xmlbeans.*</package-name>
            <package-name>org.openxmlformats.*</package-name>
            <package-name>schemaorg_apache_xmlbeans.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>    

Upvotes: 2

Kevin Seymour
Kevin Seymour

Reputation: 807

I found this article helpful, but there is a new dependency on IOUtils.byteArray that the answer doesn't handle. It results in this specific error because the version of commons IO that comes with WL doesn't support this method.

java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.byteArray(I)[B

Here is my modified weblogic.xml to account for that. We are on WL 14 with Java 11.

<weblogic-web-app
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd 
       http://xmlns.oracle.com/weblogic/weblogic-web-app 
       http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
    <context-root>xxx</context-root>
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>org.apache.commons.*</package-name>
            <package-name>org.apache.poi.*</package-name>
            <package-name>org.apache.xmlbeans.*</package-name>
            <package-name>org.openxmlformats.*</package-name>
            <package-name>schemaorg_apache_xmlbeans.*</package-name>
        </prefer-application-packages>
        <prefer-application-resources>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name>
        </prefer-application-resources>
    </container-descriptor>
    <description>xxx</description>
    <weblogic-version>14.1.1</weblogic-version>
</weblogic-web-app>

Upvotes: 3

Related Questions