I got a little bit further.
My entittyresolver gives back a XMLInputSource witj the following properties: fBaseSystemId = "file:///Users/dickdeneer/Documents/workspace/Tester/xml/po.xml "
fSystemId=fSystemId     "file://Applications/po.xsd"



It turns out that the programs hangs for about 1 minute in the statement stream = connect.getInputStream(); And because this is happening for the complete document this code is called many times.


Stacktrace:

XMLEntityManager.setupCurrentEntity(String, XMLInputSource, boolean, boolean) line: 962
XMLVersionDetector.determineDocVersion(XMLInputSource) line: 143        
SchemaParsingConfig.parse(boolean) line: 551    
SchemaParsingConfig.parse(XMLInputSource) line: 654     
SchemaDOMParser.parse(XMLInputSource) line: 523 
XSDHandler.getSchemaDocument(String, XMLInputSource, boolean, short, Element) line: 1800 XSDHandler.parseSchema(XMLInputSource, XSDDescription, Hashtable) line: 521 XMLSchemaLoader.loadSchema(XSDDescription, XMLInputSource, Hashtable) line: 554 XMLSchemaValidator.findSchemaGrammar(short, String, QName, QName, XMLAttributes) line: 2526 XMLSchemaValidator.handleStartElement(QName, XMLAttributes, Augmentations) line: 1814 XMLSchemaValidator.startElement(QName, XMLAttributes, Augmentations) line: 724
DOMNormalizer.normalizeNode(Node) line: 400     
DOMNormalizer.normalizeDocument(CoreDocumentImpl, DOMConfigurationImpl) line: 247
PSVIDocumentImpl(CoreDocumentImpl).normalizeDocument() line: 1147       
DomHandler.validateXML() line: 929      
DomHandler.validate() line: 469 
DocumentModel.validateXML(boolean) line: 579    
XMLSource.validateXML() line: 874       
ValidateAction.actionPerformed(ActionEvent) line: 147   
JToggleButton(AbstractButton).fireActionPerformed(ActionEvent) line: 1882
AbstractButton$Handler.actionPerformed(ActionEvent) line: 2202  
JToggleButton $ ToggleButtonModel(DefaultButtonModel).fireActionPerformed(ActionEvent) line: 420
JToggleButton$ToggleButtonModel.setPressed(boolean) line: 269   
CUIAquaButton $CUIAquaButtonListener(BasicButtonListener).mouseReleased(MouseEvent) line: 236
AWTEventMulticaster.mouseReleased(MouseEvent) line: 231 
JToggleButton(Component).processMouseEvent(MouseEvent) line: 5602       
JToggleButton(JComponent).processMouseEvent(MouseEvent) line: 3129      
JToggleButton(Component).processEvent(AWTEvent) line: 5367      
JToggleButton(Container).processEvent(AWTEvent) line: 2010      
JToggleButton(Component).dispatchEventImpl(AWTEvent) line: 4068 
JToggleButton(Container).dispatchEventImpl(AWTEvent) line: 2068 
JToggleButton(Component).dispatchEvent(AWTEvent) line: 3903     
LightweightDispatcher.retargetMouseEvent(Component, int, MouseEvent) line: 4256
LightweightDispatcher.processMouseEvent(MouseEvent) line: 3936  
LightweightDispatcher.dispatchEvent(AWTEvent) line: 3866        
Frame(Container).dispatchEventImpl(AWTEvent) line: 2054 
Frame(Window).dispatchEventImpl(AWTEvent) line: 1801    
Frame(Component).dispatchEvent(AWTEvent) line: 3903     
MyEventQueue(EventQueue).dispatchEvent(AWTEvent) line: 463      
MyEventQueue.dispatchEvent(AWTEvent) line: 26   
EventDispatchThread.pumpOneEventForHierarchy(int, Component) line: 269  
EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 190
EventDispatchThread.pumpEvents(int, Conditional) line: 184      
EventDispatchThread.pumpEvents(Conditional) line: 176   
EventDispatchThread.run() line: 110     

This is the relevant coding:
public String setupCurrentEntity(String name, XMLInputSource xmlInputSource,
                boolean literal, boolean isExternal)
            throws IOException, XNIException {
        // get information

        final String publicId = xmlInputSource.getPublicId();
        String literalSystemId = xmlInputSource.getSystemId();
        String baseSystemId = xmlInputSource.getBaseSystemId();
        String encoding = xmlInputSource.getEncoding();
        final boolean encodingExternallySpecified = (encoding != null);
        Boolean isBigEndian = null;
        fTempByteBuffer = null;

        // create reader
        InputStream stream = null;
        Reader reader = xmlInputSource.getCharacterStream();
        // First chance checking strict URI
String expandedSystemId = expandSystemId(literalSystemId, baseSystemId, fStrictURI);
        if (baseSystemId == null) {
            baseSystemId = expandedSystemId;
        }
        if (reader == null) {
            stream = xmlInputSource.getByteStream();
            if (stream == null) {
                URL location = new URL(expandedSystemId); ==> 
file://Applications/po.xsd
                URLConnection connect = location.openConnection();
                if (!(connect instanceof HttpURLConnection)) {
stream = connect.getInputStream(); ==> here it hangs for a very long time

But I do not understand why the URL location = new URL("file://Applications/po.xsd ") does not throw a MalformedURLException URL exception.
Because that happens when I try it in a small testprogram.

Regards,
Dick Deneer
        


Op 14 jan 2010, om 11:56 heeft Dick Deneer het volgende geschreven:

I have a strange problem using an XMLCatalogResolver.
I am using a catalog with relative paths like po.xsd. If I run the program with java 1.6 everything goes well. But when I am running in Mac OS X with java 1.5, the program hangs somewhere in the parsing. It has something to do with the opening of the URL inputstream. In java 1.5 it is using a URL in the form of file://Applications/.. This is not a valid URL. In java 1.6 the URL is file://// Applications/.. and the problem does not occur. I will try to find out some more details and then will submit a example program with this behaviour. But maybe someone recognizes this problem already and give me some hints.
I using xerces version 2.9.1.

Regards
Dick Deneer


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to