Bug 1119927

Summary: When using JVM 1.7.0_40 or later, server logs SAXParserImpl parsing errors indicating property is not recognized.
Product: [JBoss] JBoss Operations Network Reporter: Larry O'Leary <loleary>
Component: Core ServerAssignee: Jay Shaughnessy <jshaughn>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: high Docs Contact:
Priority: unspecified    
Version: JON 3.1.2CC: jshaughn
Target Milestone: DR01   
Target Release: JON 3.3.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
The Xerces library included in the JON enterprise container did not support the accessExternalDTD or entityExpansionLimit properties, which caused ERROR messages to appear on server start and in server.log. The Xerces library has been removed from the product and replaced with a version where the bug was patched upstream, fixing the originally-reported issue.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-12-11 14:02:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Larry O'Leary 2014-07-15 21:13:45 UTC
Description of problem:
After installing Java 1.7.0_40 or later (Oracle or OpenJDK), the JBoss ON server displays the following error on startup:

    ERROR [STDERR] Warning:  org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized.
    ERROR [STDERR] Compiler warnings:
    ERROR [STDERR]   WARNING:  'org.apache.xerces.jaxp.SAXParserImpl: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.'

This has been reported in http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8016153 but it does not appear that it is being fixed in JVM 7.

Version-Release number of selected component (if applicable):
3.1.2.GA

How reproducible:
Always

Steps to Reproduce:
1. Install JBoss ON 3.1.2 system
2. Start JBoss ON server using Oracle or OpenJDK JVM 1.7.0_40, 1.7.0_55, or even 1.7.0_60.

Actual results:
Server log will contain the following message at startup:

    INFO  [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Recovery manager started
    INFO  [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Binding TransactionManager JNDI Reference
    INFO  [org.jboss.ejb3.EJB3Deployer] Starting java:comp multiplexer
    ERROR [STDERR] Warning:  org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized.
    ERROR [STDERR] Compiler warnings:
    ERROR [STDERR]   WARNING:  'org.apache.xerces.jaxp.SAXParserImpl: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.'
    INFO  [org.apache.catalina.core.AprLifecycleListener] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib64:/lib64:/lib:/usr/lib
    INFO  [org.apache.coyote.http11.Http11Protocol] Initializing Coyote HTTP/1.1 on http-192.168.1.1-7080
    INFO  [org.apache.coyote.http11.Http11Protocol] Initializing Coyote HTTP/1.1 on http-192.168.1.1-7443


Expected results:
No ERROR messages on start.

Comment 2 Jay Shaughnessy 2014-07-21 14:49:07 UTC
It seems the warnings are due to the 3rd party Xerces lib we use for parsing, which is unaware of the newer properties attempting to be set on the parser.

We can see in this Java code snippet that the accessExternalDTD property should not be an issue. The parser code protects things and the unrecognized property generates only a log message:  See Lines 480:487,

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java?av=f


Looking to see about the other property...

Comment 3 Jay Shaughnessy 2014-07-21 16:21:49 UTC
I can't definitively locate the call generating the SAXNotRecognizedException for ENTITY_EXPANSION_LIMIT.  But it's most likely generated when the limit is trying to be set.  It is likely tryng to be set to the default of 64000, but since this version of xerces does not know about the property it throws the exception, which is very likely just logged by the caller.

Overall, I'd suggest these messages be ignored unless this second message can be linked to some errant behavior (the other is safe, as described above), which is unlikely.

The workaround, I believe, would be to back up to Java7 u25.

Comment 4 Jay Shaughnessy 2014-07-28 18:21:22 UTC
This should not be an issue in 3.3.0 because we no longer use the problematic xerces lib.

Comment 5 Simeon Pinder 2014-07-31 15:51:51 UTC
Moving to ON_QA as available to test with brew build of DR01: https://brewweb.devel.redhat.com//buildinfo?buildID=373993