Sorry I made one mistake:
URL location = new URL("file://Applications/po.xsd")
does not throw an exception.
I throws an exception only when you create a File from it:
location = new URL("file://Applications/po.xsd");
File f = new File(location.toURI())
Exception in thread "main" java.lang.IllegalArgumentException: URI has
an authority component
at java.io.File.<init>(File.java:340)
at SaxParser2.main(SaxParser2.java:174)
and when u use it in a connect.getInputStream it throws a
java.net.UnknownHostException
So still I wonder why it hangs in the XMLEntityManager.
Maybe it has something to do with timeoutsettings.
Dick Deneer
Op 14 jan 2010, om 16:54 heeft Dick Deneer het volgende geschreven:
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]