Beenden einer UNO-Verbindung aus Java

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Beenden einer UNO-Verbindung aus Java

Beenden einer UNO-Verbindung aus Java

von vboehm » Fr, 11.01.2008 13:33

Hallo,
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();
eine Verbindung aufgebaut und zu irgendetwas benutzt habe, möchte ich alles wieder ordnungsgemäß schließen. Darüber schweigen sich aber die mir bekannten Beispiele aus; die bauen nur auf, verwenden die Verbindung und beenden sich dann. Was muß ich für die Ordnungsgemäße Beendigung einer UNO-Verbindung tun?

mfg Volker

Nach oben