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