You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by "Anshuman ." <a....@TechMahindra.com> on 2010/08/31 08:07:19 UTC

Facing Issue with Xerces 1.4.4 in resolving DTD path

Hi,

I am facing issue while trying to resolve DTD relative path.
The issue started while trying to migrate EJB 2.0 from Weblogic 8.1 to Weblogic 10.3.

The issue goes below:-

The weblogic domain path is getting appended by default to the DTD.
The DOCTYPE declaration goes below:-

<!DOCTYPE ScriptProperties SYSTEM "ScriptProperties.dtd">

Now the above DTD is located at location F:\anshu\dtd\
The weblogic  domain path is F:\anshu_domain\

Now while using entity resolver the above dtd is getting resolved as below:-

F:\anshu\dtd\file:\ F:\anshu_domain\ ScriptProperties.dtd

Please find the below code for the same:-


SAXBuilder builder = new SAXBuilder();
builder.setEntityResolver(new EntityResolver() {public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
                                    // locate the DTD ...
                    return new InputSource("file:///" +
                                            System.getProperty("anshu.dtd.properties") + File.separatorChar + systemId);}
                  });

Here the anshu.dtd.properties has been set as F:\anshu\dtd.


I am getting the error while building DOM object as the path resolve is incorrect.
The same code is working on Weblogic 8.1 but is not working on Weblogic 10.3.



PFB the stacktrace below:-


org.jdom.JDOMException: Error in building: F:\anshu\dtd \file:\D:\anshu_domin\ScriptProperties.dtd (The filename, directory name, or volume label syntax is incorrect);       at org.jdom.input.SAXBuilder.build(SAXBuilder.java:373);            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:673); at com.bt.emw.Versata.XmlDataFile.<init>(Unknown Source);  at com.bt.emw.Versata.BaseData.read(Unknown Source);              at com.bt.emw.Versata.VomStartup.startup(Unknown Source);               at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeStartup(ClassDeploymentManager.java:278);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass(ClassDeploymentManager.java:256);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.access$000(ClassDeploymentManager.java:54);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager$1.run(ClassDeploymentManager.java:205);                at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321);   at weblogic.security.service.SecurityManager.runAs(Unknown Source);    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment(ClassDeploymentManager.java:198);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsBeforeAppDeployments(ClassDeploymentManager.java:145);                at weblogic.management.deploy.classdeployment.ClassDeploymentService.start(ClassDeploymentService.java:20);          at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64);   at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201);           at weblogic.work.ExecuteThread.run(ExecuteThread.java:173);Caused by: java.io.FileNotFoundException: F:\STAA\anshu\StaaInfrastructure\staa\2.4.25.0\properties\file:\D:\STAA-DOMAIN\staa_domain\ConfigData.dtd (The filename, directory name, or volume label syntax is incorrect);   at java.io.FileInputStream.open(Native Method);            at java.io.FileInputStream.<init>(FileInputStream.java:106);            at java.io.FileInputStream.<init>(FileInputStream.java:66);                at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70); at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161);    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653);               at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315);              at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282);      at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283);               at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1176);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1075);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:993);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647);           at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508);                at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807);          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737);               at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107);      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205);    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522);           at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133);                at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:172);       at org.jdom.input.SAXBuilder.build(SAXBuilder.java:354); ... 16 more;java.io.FileNotFoundException: F:\anshu\dtd \file:\D:\anshu_domin\ScriptProperties.dtd
(The filename, directory name, or volume label syntax is incorrect);        at java.io.FileInputStream.open(Native Method);                at java.io.FileInputStream.<init>(FileInputStream.java:106);       at java.io.FileInputStream.<init>(FileInputStream.java:66);               at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70);      at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161);    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653);               at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315);              at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282);      at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283);               at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1176);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1075);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:993);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647);           at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140);                at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508);                at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807);          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737);               at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107);      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205);    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522);           at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133);                at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:172);       at org.jdom.input.SAXBuilder.build(SAXBuilder.java:354); at org.jdom.input.SAXBuilder.build(SAXBuilder.java:673);            at com.bt.emw.Versata.XmlDataFile.<init>(Unknown Source);       at com.bt.emw.Versata.BaseData.read(Unknown Source);                at com.bt.emw.Versata.VomStartup.startup(Unknown Source);              at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeStartup(ClassDeploymentManager.java:278);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass(ClassDeploymentManager.java:256);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.access$000(ClassDeploymentManager.java:54);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager$1.run(ClassDeploymentManager.java:205);                at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321);   at weblogic.security.service.SecurityManager.runAs(Unknown Source);    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment(ClassDeploymentManager.java:198);                at weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsBeforeAppDeployments(ClassDeploymentManager.java:145);                at weblogic.management.deploy.classdeployment.ClassDeploymentService.start(ClassDeploymentService.java:20);          at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64);   at weblogic.work.ExecuteThread.execute


============================================================================================================================Disclaimer:  This message and the information contained herein is proprietary and confidential and subject to the Tech Mahindra policy statement, you may review the policy at <a href="http://www.techmahindra.com/Disclaimer.html">http://www.techmahindra.com/Disclaimer.html</a> externally and <a href="http://tim.techmahindra.com/Disclaimer.html">http://tim.techmahindra.com/Disclaimer.html</a> internally within Tech Mahindra.============================================================================================================================

Re: Facing Issue with Xerces 1.4.4 in resolving DTD path

Posted by Michael Glavassevich <mr...@ca.ibm.com>.
Hi,

You are not resolving a relative path. The system ID passed to
EntityResolver.resolveEntity(String, String) is a fully resolved (i.e.
absolute) URI. Your code is just concatenating text to that string and not
surprisingly it doesn't work.

Please also note that you're not using Apache Xerces at all. The
com.sun.org.apache.xerces.internal.* packages are part of Oracle/Sun's fork
which they ship in their JDK. If you are experiencing issues with that code
base you would need to pursue it with Oracle. We have no influence over
what they include in their versions.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

"Anshuman ." <a....@TechMahindra.com> wrote on 08/31/2010 02:07:19 AM:

> Hi,
>
> I am facing issue while trying to resolve DTD relative path.
> The issue started while trying to migrate EJB 2.0 from Weblogic 8.1
> to Weblogic 10.3..
>
> The issue goes below:-
>
> The weblogic domain path is getting appended by default to the DTD.
> The DOCTYPE declaration goes below:-
>
> <!DOCTYPE ScriptProperties SYSTEM "ScriptProperties.dtd">
>
> Now the above DTD is located at location F:\anshu\dtd\
> The weblogic  domain path is F:\anshu_domain\
>
> Now while using entity resolver the above dtd is getting resolved as
below:-
>
> F:\anshu\dtd\file:\ F:\anshu_domain\ ScriptProperties.dtd
>
> Please find the below code for the same:-
>
>
> SAXBuilder builder = new SAXBuilder();
> builder.setEntityResolver(new EntityResolver() {public InputSource
> resolveEntity(String publicId, String systemId) throws SAXException,
> IOException {
>                                     // locate the DTD ...
>                     return new InputSource("file:///" +..
>                                             System.getProperty
> ("anshu.dtd.properties") + File.separatorChar + systemId);}
>                   });
>
> Here the anshu.dtd.properties has been set as F:\anshu\dtd.
>
>
> I am getting the error while building DOM object as the path resolve
> is incorrect.
> The same code is working on Weblogic 8.1 but is not working on Weblogic
10.3.
>
>
>
> PFB the stacktrace below:-
>
>
> org.jdom.JDOMException: Error in building: F:\anshu\dtd \file:\D:
> \anshu_domin\ScriptProperties.dtd (The filename, directory name, or
> volume label syntax is incorrect);       at
> org.jdom.input.SAXBuilder.build(SAXBuilder.java:373);            at
> org.jdom.input.SAXBuilder.build(SAXBuilder.java:673); at
> com.bt.emw.Versata.XmlDataFile.<init>(Unknown Source);  at
> com.bt.emw.Versata.BaseData.read(Unknown Source);              at
> com.bt.emw.Versata.VomStartup.startup(Unknown Source);
> at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeStartup

> (ClassDeploymentManager.java:278);                at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass

> (ClassDeploymentManager.java:256);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentManager.access
> $000(ClassDeploymentManager.java:54);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentManager
> $1.run(ClassDeploymentManager.java:205);                at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs
> (AuthenticatedSubject.java:321);   at
> weblogic.security.service.SecurityManager.runAs(Unknown Source);
> at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment

> (ClassDeploymentManager.java:198);                at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsBeforeAppDeployments

> (ClassDeploymentManager.java:145);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentService.start
> (ClassDeploymentService.java:20);          at
> weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64);
> at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201);
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:173);Caused
> by: java.io.FileNotFoundException: F:\STAA\anshu\StaaInfrastructure
> \staa\2.4.25.0\properties\file:\D:\STAA-DOMAIN\staa_domain
> \ConfigData.dtd (The filename, directory name, or volume label
> syntax is incorrect);   at java.io.FileInputStream.open(Native
> Method);            at java.io.FileInputStream.<init>
> (FileInputStream.java:106);            at
> java.io.FileInputStream.<init>(FileInputStream.java:66);
> at sun.net.www.protocol.file.FileURLConnection.connect
> (FileURLConnection.java:70); at
> sun.net.www.protocol.file.FileURLConnection.getInputStream
> (FileURLConnection.java:161);    at
>
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity
> (XMLEntityManager.java:653);               at
> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity
> (XMLEntityManager.java:1315);              at
> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity
> (XMLEntityManager.java:1282);      at
> com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource
> (XMLDTDScannerImpl.java:283);               at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $DTDDriver.dispatch(XMLDocumentScannerImpl.java:1176);
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $DTDDriver.next(XMLDocumentScannerImpl.java:1075);                at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $PrologDriver.next(XMLDocumentScannerImpl.java:993);
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next
> (XMLDocumentScannerImpl.java:647);           at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next
> (XMLNSDocumentScannerImpl.java:140);                at
>
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument

> (XMLDocumentFragmentScannerImpl.java:508);                at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse
> (XML11Configuration.java:807);          at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse
> (XML11Configuration.java:737);               at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse
> (XMLParser.java:107);      at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse
> (AbstractSAXParser.java:1205);    at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
> $JAXPSAXParser.parse(SAXParserImpl.java:522);           at
> weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:
> 133);                at weblogic.xml.jaxp.RegistryXMLReader.parse
> (RegistryXMLReader.java:172);       at
> org.jdom.input.SAXBuilder.build(SAXBuilder.java:354); ... 16
> more;java.io.FileNotFoundException: F:\anshu\dtd \file:\D:
> \anshu_domin\ScriptProperties.dtd
> (The filename, directory name, or volume label syntax is incorrect);
> at java.io.FileInputStream.open(Native Method);                at
> java.io.FileInputStream.<init>(FileInputStream.java:106);       at
> java.io.FileInputStream.<init>(FileInputStream.java:66);
> at sun.net.www.protocol.file.FileURLConnection.connect
> (FileURLConnection.java:70);      at
> sun.net.www.protocol.file.FileURLConnection.getInputStream
> (FileURLConnection.java:161);    at
>
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity
> (XMLEntityManager.java:653);               at
> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity
> (XMLEntityManager.java:1315);              at
> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity
> (XMLEntityManager.java:1282);      at
> com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource
> (XMLDTDScannerImpl.java:283);               at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $DTDDriver.dispatch(XMLDocumentScannerImpl.java:1176);
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $DTDDriver.next(XMLDocumentScannerImpl.java:1075);                at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> $PrologDriver.next(XMLDocumentScannerImpl.java:993);
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next
> (XMLDocumentScannerImpl.java:647);           at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next
> (XMLNSDocumentScannerImpl.java:140);                at
>
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument

> (XMLDocumentFragmentScannerImpl.java:508);                at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse
> (XML11Configuration.java:807);          at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse
> (XML11Configuration.java:737);               at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse
> (XMLParser.java:107);      at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse
> (AbstractSAXParser.java:1205);    at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
> $JAXPSAXParser.parse(SAXParserImpl.java:522);           at
> weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:
> 133);                at weblogic.xml.jaxp.RegistryXMLReader.parse
> (RegistryXMLReader.java:172);       at
> org.jdom.input.SAXBuilder.build(SAXBuilder.java:354); at
> org.jdom.input.SAXBuilder.build(SAXBuilder.java:673);            at
> com.bt.emw.Versata.XmlDataFile.<init>(Unknown Source);       at
> com.bt.emw.Versata.BaseData.read(Unknown Source);                at
> com.bt.emw.Versata.VomStartup.startup(Unknown Source);
> at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeStartup

> (ClassDeploymentManager.java:278);                at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass

> (ClassDeploymentManager.java:256);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentManager.access
> $000(ClassDeploymentManager.java:54);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentManager
> $1.run(ClassDeploymentManager.java:205);                at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs
> (AuthenticatedSubject.java:321);   at
> weblogic.security.service.SecurityManager.runAs(Unknown Source);
> at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment

> (ClassDeploymentManager.java:198);                at
>
weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsBeforeAppDeployments

> (ClassDeploymentManager.java:145);                at
> weblogic.management.deploy.classdeployment.ClassDeploymentService.start
> (ClassDeploymentService.java:20);          at
> weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64);
> at weblogic.work.ExecuteThread.execute
>
>
>
============================================================================================================================Disclaimer:

> This message and the information contained herein is proprietary and
> confidential and subject to the Tech Mahindra policy statement, you
> may review the policy at http://www.techmahindra.com/Disclaimer.html
> externally and http://tim.techmahindra.com/Disclaimer.html
> internally within Tech
>
Mahindra.============================================================================================================================