Update Center fails to parse updates.xml generated by maven based application
"Asterix45" <[email protected]>
| Newsgroups | gmane.comp.java.netbeans.modules.openide.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all,
I'm trying to correctly set a dynamic update center server which provide an xml on application request based on some information provided through url invocation.
This server is PHP-based and running in local for now.
In my maven application I generated the updates.xml and all the .nbm files running maven with the goal nbm:autoupdate. All the files were generated in a folder of my application.
As first step I'm trying to provide the full updates.xml file, in order to test my architecture.
I made this tests:
1. the application calls directly the updates.xml file by url
Code:
eg. http://localhost/.../updates.xml
2. the application calls a .php script which echos a string with the .xml content
Code:
eg. die('<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE module_updates PUBLIC "-//NetBeans//DTD .....');
3. same as point 2 but with this line (xml header) before the "die" command
Code:
header('Content-Type: application/xml');
or
Code:
header('Content-Type: application/xml; charset=utf-8');
In all of this test I have the same error in my application due to xml content parsing:
Code:
WARNING [org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser]: http://localhost/WorkersCall-PHP/WebSuit-PHP/updateXML/updates.xml:1:1: Il contenuto non è consentito nel prologo.
INFO [org.netbeans.modules.autoupdate.services.UpdateUnitFactory]: Cannot read UpdateItem from UpdateProvider Default Update Center[xyz_myorg_workerscall_WorkersCallStartup_update_center] to http://localhost/WorkersCall-PHP/WebSuit-PHP/updateXML/updates.xml
org.xml.sax.SAXParseException; systemId: http://localhost/WorkersCall-PHP/WebSuit-PHP/updateXML/updates.xml; lineNumber: 1; columnNumber: 1; Il contenuto non è consentito nel prologo.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:642)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:326)
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser.getUpdateItems(AutoupdateCatalogParser.java:197)
Caused: java.io.IOException: Failed to parse http://localhost/WorkersCall-PHP/WebSuit-PHP/updateXML/updates.xml
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser.getUpdateItems(AutoupdateCatalogParser.java:199)
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogProvider.getUpdateItems(AutoupdateCatalogProvider.java:143)
[catch] at org.netbeans.modules.autoupdate.services.UpdateUnitFactory.appendUpdateItems(UpdateUnitFactory.java:173)
at org.netbeans.modules.autoupdate.services.UpdateUnitFactory.getUpdateUnits(UpdateUnitFactory.java:143)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl$Cache.<init>(UpdateManagerImpl.java:271)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl.getCache(UpdateManagerImpl.java:231)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl.getUpdateUnits(UpdateManagerImpl.java:190)
at org.netbeans.api.autoupdate.UpdateManager.getUpdateUnits(UpdateManager.java:92)
at xyz.myorg.workerscall.startup.updateCenter.UpdateCenterManager.doRealCheck(UpdateCenterManager.java:70)
at xyz.myorg.workerscall.startup.updateCenter.UpdateCenterManager.updateApplication(UpdateCenterManager.java:46)
at xyz.myorg.workerscall.startup.installer.Installer$2.run(Installer.java:42)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)
Also I can say I'm sure that the content of the xml is correctly retrieved because this line of log:
Code:
FINEST [mainLogger]: xyz.myorg.workerscall.startup.updateCenter.GeneraUpdateLink::getLink xml |<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE module_updates PUBLIC "-//NetBeans//DTD Autoupdate Catalog 2.5//EN" "http://www.netbeans.org/dtds/autoupdate-catalog-2_5.dtd"> <module_updates timestamp="13/11/10/27/02/2016"> <module codenamebase="xyz.myorg.jwebsuitclient.JWebSuitClient" distribution="....|
(I added the pipe chars in the log command to understand where the xml content starts)
Reading posts I understand that this could be a problem of xml encoding, regarding BOM characters, so I add some filters in my php script to delete this character and I opened the xml file with an hex editor to understand if it has some "dirty" chars. I remove that chars also but the problem still remains (picture in attachment).
I added the updates.xml file in attachment so that you can use it.
Thanks for any help,
Regards,
Asterix
Attachments:
http://forums.netbeans.org//files/updatesxml_148.zip
http://forums.netbeans.org//files/xml_on_hex_editor_151.png