axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sam Ruby" <>
Subject Status update: Axis w/Xerces2
Date Mon, 19 Nov 2001 20:12:28 GMT
Doing performance measurements w/Xerces1, we are finding that approximately
40% of the time is being spent in the parser.  Clearly this represents a
fertile  opportunity for improvment.  Measuring the same workloads with
Crimson resulted in a slight degradation.

I would like to measure Xerces2 and explore both XNI and constructing a
minimal pipeline which eliminates any unnecessary overhead (e.g., DTD
validation), but I am still unable to progress past the following problems
exposed by the unit tests.  Debugging, it looks like the Axis code which
causes the problem down stream is as follows:

       public int startElement(String p1, String p2, String p3, org.xml.sax.Attributes p4)
           if (numattrs == attrs.length) {
               Object[] nattrs = new Object[numattrs * 2];
               System.arraycopy(attrs, 0, nattrs, 0, numattrs);
               attrs = nattrs;

           attrs[numattrs++] = new AttributesImpl(p4);
           return events.add(STATE_START_ELEMENT, st.addSymbol(p1), st.addSymbol(p2), st.addSymbol(p3),

Later attempts to reference the copied attributes results in:

     at org.xml.sax.helpers.AttributesImpl.getValue(Unknown Source)
     at org.apache.axis.encoding.DeserializationContext.getTypeFromAttributes(
     at org.apache.axis.message.RPCHandler.onStartChild(
     at org.apache.axis.encoding.DeserializationContext.startElement(
     at org.apache.axis.message.SAX2EventRecorder.replay(
     at org.apache.axis.message.MessageElement.publishToHandler(
     at org.apache.axis.message.RPCElement.deserialize(
     at org.apache.axis.message.RPCElement.getParam(
     at test.encoding.TestSer.doTestData(
     at test.encoding.TestSer.testDataWithHrefs(
     at java.lang.reflect.Method.invoke(Native Method)
     at junit.framework.TestCase.runTest(
     at junit.framework.TestCase.runBare(
     at junit.framework.TestResult$1.protect(
     at junit.framework.TestResult.runProtected(
     at junit.framework.TestSuite.runTest(
     at junit.framework.TestSuite.runTest(

I'll keep debugging, but I thought I would post this here to see if it generates any thoughts
or suggestions...

- Sam Ruby

View raw message