nachdem ich jetzt - dank der passenden Links - in der Lage bin, UNO-Verbindungen zu OO aus Java heraus zu erstellen, hab' ich gleich das nächste Problem:
Bisher benutzte ich zum Erstellen von Dokumenten ein separates Python-Programm, das gestartet wurde, das Dokument verwurstete und sich dann wieder beendete. Jetzt möchte ich natürlich die Dokumente direkt aus meiner Java-Applikation erstellen, die aber nicht gleich darauf beendet wird, sondern ein Server (RMI-Server) ist, der wochenlang durchläuft. Da wäre es natürlich fatal, wenn ich dauernd neue Resourcen belegen würde, die nur bei einer zufälligen Garbage Collection (alle Jubeljahre) wieder freigegeben würden.
Deshalb meine Frage:
Nachdem ich mit
Code: Alles auswählen
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=2002;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);
PropertyValue[] loadProperties = new PropertyValue[1];
loadProperties[0] = new PropertyValue();
loadProperties[0].Name = "Hidden";
loadProperties[0].Value = true;
XComponent dokument = xcomponentloader.loadComponentFromURL(
loadUrl, "_blank", 0, loadProperties);
....
dokument.dispose();
mfg Volker