[JAVA] URL seems to be an unsupported one
Verfasst: Mi, 24.03.2010 08:44
Hallo
Ich hab mich hier im Forum angemeldet, weil ich ein Problem hab, wozu ich noch keine Lösung gefunden habe. Am Besten fange ich mal von den System an, mit dem ich arbeite. Mein Team und ich entwickeln in oracel ADF 10 (JSF-Framework von oracle - Java 1.5) eine Webapplikation. Für ein Dokumentenverwaltungssystem soll ein dementsprechendes Modul für diese Applikation entwickelt werden. Man kann in der Webapplikation einen Button drücken mit dem automatisch ein Template-DOC von einem FTP geladen wird (als byte[]), welches mit Daten aus der Oberfläche gemerged (OpenOffice 3.2-Service), als PDF auf dem FTP abgelegt und vom User als DOC heruntergeladen wird.
Der OpenOffice-Service dafür war zu Testzwecken immer auf meinem WinXP-Rechner lokal gestartet.
Damit ihr seht, wie die properties gefüllt werden und die Methode aufgerufen wird, hier der Teil des Quellcodes:
Wie gesagt, bei mir lokal hat alles super funktioniert. Auch wenn ich den Service nicht mit localhost sondern mit meiner IP starte, kann mein Kollege meine Implementierung ausführen.
Nun soll jedoch der Service auf unserem Linux-Server laufen. Dazu wurden unter anderen folgende Pakete installiert.
Nun tritt die Exception auf
Also den Service schein meine Applikation zu finden, da sonst ein anderer Fehler auftritt. Irgendwas stimmt dort noch nicht und ich weiß einfach nicht mehr weiter. Ich wäre für jede Spur, der ich nachgehen kann dankbar
Viele Grüße
Majo
Ich hab mich hier im Forum angemeldet, weil ich ein Problem hab, wozu ich noch keine Lösung gefunden habe. Am Besten fange ich mal von den System an, mit dem ich arbeite. Mein Team und ich entwickeln in oracel ADF 10 (JSF-Framework von oracle - Java 1.5) eine Webapplikation. Für ein Dokumentenverwaltungssystem soll ein dementsprechendes Modul für diese Applikation entwickelt werden. Man kann in der Webapplikation einen Button drücken mit dem automatisch ein Template-DOC von einem FTP geladen wird (als byte[]), welches mit Daten aus der Oberfläche gemerged (OpenOffice 3.2-Service), als PDF auf dem FTP abgelegt und vom User als DOC heruntergeladen wird.
Der OpenOffice-Service dafür war zu Testzwecken immer auf meinem WinXP-Rechner lokal gestartet.
Der Quellcode sah dementsprechend aus:soffice -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager -headless -norestore -display :1.0
Code: Alles auswählen
private static XComponent openDocument(PropertyValue[] openProperties) throws Exception {
XComponentContext xLocalContext =
Bootstrap.createInitialComponentContext(null);
XMultiComponentFactory xLocalServiceManager =
xLocalContext.getServiceManager();
Object urlResolver =
xLocalServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver",
xLocalContext);
XUnoUrlResolver xUnoUrlResolver =
(XUnoUrlResolver)UnoRuntime.queryInterface(XUnoUrlResolver.class,
urlResolver);
Object initialObject =
xUnoUrlResolver.resolve("uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager");
XPropertySet xPropertySet =
(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,
initialObject);
XComponentContext remoteContext =
(XComponentContext)UnoRuntime.queryInterface(XComponentContext.class,
xPropertySet.getPropertyValue("DefaultContext"));
XMultiComponentFactory remoteServiceManager =
remoteContext.getServiceManager();
Object desktop =
remoteServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop",
remoteContext);
XComponentLoader xcomponentloader =
(XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.class,
desktop);
XComponent documentToStore =
xcomponentloader.loadComponentFromURL("private:stream", "_blank",
0, openProperties);
return documentToStore;
}
Code: Alles auswählen
PropertyValue[] openProperties = new PropertyValue[3];
openProperties[0] = new PropertyValue();
openProperties[0].Name = "Hidden";
openProperties[0].Value = Boolean.valueOf(false);
openProperties[1] = new PropertyValue();
openProperties[1].Name = "FilterName";
openProperties[1].Value = "Rich Text Format";
openProperties[2] = new PropertyValue();
openProperties[2].Name = "InputStream";
openProperties[2].Value = new OOInputStream(docData);
documentToStore = openDocument(openProperties);
if (documentToStore == null) {
openProperties[1].Value = "MS Word 97";
documentToStore = openDocument(openProperties);
}
if (documentToStore == null) {
openProperties[1].Value = "MS Word 2003 XML";
documentToStore = openDocument(openProperties);
}
Nun soll jedoch der Service auf unserem Linux-Server laufen. Dazu wurden unter anderen folgende Pakete installiert.
Den Service habe ich nun wie folgt gestartet:openoffice.org3 - Brand module for OpenOffice.org 3.2
ooobasis3.2-base - Base module for OpenOffice.org 3.2
ooobasis3.2-draw - Draw module for OpenOffice.org 3.2
ooobasis3.2-graphicfilter - Graphic filter module for OpenOffice.org 3.2
ooobasis3.2-de-base - Base language module for OpenOffice.org 3.2, language de
ooobasis3.2-de-math - Math language module for OpenOffice.org 3.2, language de
ooobasis3.2-de-res - Language resource module for OpenOffice.org 3.2, language de
ooobasis3.2-writer - Writer module for OpenOffice.org 3.2
ooobasis3.2-de-help - Language help module for OpenOffice.org 3.2, language de
ooobasis3.2-de-draw - Draw language module for OpenOffice.org 3.2, language de
ooobasis3.2-de-writer - Writer language module for OpenOffice.org 3.2, language de
openoffice.org-ure - UNO Runtime Environment
Dem entsprechend habe ich auch die URL im Quellcode geändert:./soffice "-accept=socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager" -headless -norestore -display :1.0
Code: Alles auswählen
Object initialObject =
xUnoUrlResolver.resolve("uno:socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager");
und zwar an dieser Stelle:com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
Code: Alles auswählen
XComponent documentToStore =
xcomponentloader.loadComponentFromURL("private:stream", "_blank",
0, openProperties);

Viele Grüße
Majo