Message:

   The following issue has been resolved as WON'T FIX.

   Resolver: Michael Glavassevich
       Date: Tue, 1 Jun 2004 10:46 AM

There's a historical reason for this behaviour. A default error handler [1] was 
created some time ago to address the concerns of users who claimed that the parser was 
broken because they were not receiving notification of validation errors.

I had a chat with some other Xerces-J developers and we noted that regardless of what 
the parser does in this situation, some users won't like the behaviour: either 
reporting nothing or writing to System.err. I wasn't involved in the project when the 
decision to start printing error messages to the console was made, however I believe 
the developers were aware of the tradeoff. The change that was made to print to 
System.err requires that a no-op error handler be installed to 'quiet' the default 
behaviour.

[1] 
http://cvs.apache.org/viewcvs.cgi/xml-xerces/java/src/org/apache/xerces/util/DefaultErrorHandler.java?rev=1.1.2.1&view=markup
---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/XERCESJ-972

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: XERCESJ-972
    Summary: Problem using Xerces with Xinetd sockets
       Type: Bug

     Status: Resolved
   Priority: Major
 Resolution: WON'T FIX

    Project: Xerces2-J
   Versions:
             2.6.2

   Assignee: 
   Reporter: Bilari

    Created: Sun, 30 May 2004 11:54 PM
    Updated: Tue, 1 Jun 2004 10:46 AM
Environment: Redhat Linux Enterprise Linux Server version 3 on i686.

Description:
I downloaded the source code for Xerces-J. It is strewn with System.out.println and 
System.err.println. This is all very nice for debug purposes, but there are major 
complications when an application relies on Xinetd to invoke itself.
Xinetd invokes the application and passes the socket input stream and output stream to 
System.in and System.out respectively. So when in the Xerces code, System.out or 
System.err is executed, in the context of an application invoked via Xinetd, it 
actually performs a write on the Socket and hence to the invoking application. This is 
a very tricky issue and I have temporarily fixed it by calling:
DOMParser.setProperty("error-handler",null).
But I dont think this is a very elegant way of doing it. So I request you to consider 
the fact that it is a VERY bad idea of having System.outs or System.errs in the code. 
Use proper Logging. Log4J is good, but it also has System.outs and System.errs in its 
code. 



---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to