axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sam Ruby" <ru...@us.ibm.com>
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),
numattrs-1);
       }

Later attempts to reference the copied attributes results in:

     java.lang.NullPointerException
     at org.xml.sax.helpers.AttributesImpl.getValue(Unknown Source)
     at org.apache.axis.encoding.DeserializationContext.getTypeFromAttributes(DeserializationContext.java:301)
     at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:160)
     at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:606)
     at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
     at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:387)
     at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:115)
     at org.apache.axis.message.RPCElement.getParam(RPCElement.java:124)
     at test.encoding.TestSer.doTestData(TestSer.java:87)
     at test.encoding.TestSer.testDataWithHrefs(TestSer.java:44)
     at java.lang.reflect.Method.invoke(Native Method)
     at junit.framework.TestCase.runTest(TestCase.java:157)
     at junit.framework.TestCase.runBare(TestCase.java:131)
     at junit.framework.TestResult$1.protect(TestResult.java:106)
     at junit.framework.TestResult.runProtected(TestResult.java:124)
     at junit.framework.TestResult.run(TestResult.java:109)
     at junit.framework.TestCase.run(TestCase.java:122)
     at junit.framework.TestSuite.runTest(TestSuite.java:173)
     at junit.framework.TestSuite.run(TestSuite.java:168)
     at junit.framework.TestSuite.runTest(TestSuite.java:173)
     at junit.framework.TestSuite.run(TestSuite.java:168)
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:241)
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:419)

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

- Sam Ruby


Mime
View raw message