[JAVA] URL seems to be an unsupported one

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: [JAVA] URL seems to be an unsupported one

Re: [JAVA] URL seems to be an unsupported one

von felbi » Do, 06.05.2010 13:22

Vielen Dank für diese umfangreichen Einschätzungen!

Re: [JAVA] URL seems to be an unsupported one

von Stephan » Do, 06.05.2010 09:10

Nochmal kurz zum Developer's Guide für 3.2: Wann ist denn in der Regel mit diesem für eine neue Version zu rechnen, bzw. gibt es etwas Vergleichbares speziell für Version 3.2?
Es gibt, meines Wissens nur noch das bereits durch Dich genannte, Wiki:
http://wiki.services.openoffice.org/wik ... pers_Guide

Dieses stellt, meines Erachtens, immer den letzten Stand dar der verfügbar ist. Im Zweifelsfall würde ich vermuten das es auch mal sein kann das dort veröffentlichte Infos nicht topaktuell sind, das dann aber nur weil es niemand geschafft hat letztaktuelle Infos einzupflegen.
Im Zweifelsfall würde ich auf der dev-api-Liste fragen, dort posten (auch) die Entwickler die aus erster Hand Auskunft geben können wie der Stand ist.
Siehe unten auf SEite:
http://api.openoffice.org/servlets/Proj ... ngListList

Du solltest aber die Dinge nicht falsch vermuten, auch zu Zeiten wo es das Ganze als ein grosses PDF gab, galt eine z.B. 2.3er Version quasi für alle OOo-Versionen bis 2.3 und nicht nur für 2.3, ausserdem gab es meines Wissens nicht zwingend zu jeder OOo-Version auch eine neue DevelopersGuide-Version.


Um über aktuelle Entwicklungen der API informiert zu sein, ist doch ohnehin die IDL-Referenz:
http://api.openoffice.org/docs/common/r ... le-ix.html

viel wesentlicher.
Es ist zwar richtig das das Developersguide einige Infos enthält die nicht in der IDL-REferenz stehen, was jedoch das Thema API betrifft ist das Developersguide wohl eher sowas wie eine kommentierete Beispielsammlung (überwiegend Java) für ausgewählte Dinge der IDL-Referenz. Sicher legt das DevelopersGuide auch Wert auf Sytematik und ausreichende Umfassenheit, nur vollständig hinsichtlich aller Dinge der API/IDL-Referenz ist das doch keineswegs.

Im Übrigen ist der Stand auf http://api.openoffice.org/docs/common/r ... le-ix.html immer sehr aktuell, zumindest so mein Eindruck über die letzten 5 Jahre, denn es war häufiger zu beobachten das das Ganze aktueller war als die letztaktuelle Offline-Version im SDK, d.h. es wurde auch immer zwischen 2 OOo-SDK-Versionen weiter aktualisiert.
Im Detail ist das Ganze aber nicht in jeder Kleinigkeit vollständig, weil erstens Dinge die noch in Erprobung sind (wo also nicht feststeht ob sie beibehalten werden) nicht zwingend dort aufgeführt sind und weil es spezifische Dinge gibt die mit Absicht nicht dort dokumentiert werden (meinethalben z.B. Dinge die die Entwickler nur für den internen Gebrauch nutzen).
In solchen Fällen befrage nötigenfalls wieder o.g. dev-api-Mailingliste.

Wenn Dinge vorhanden, aber nicht in der IDL-Referenz dokumentiert, sind merkst Du das daran das sie mitttels .dbg_Properties bzw. .dbg_methods zwar angezeigt werden, in der IDL-Referenz jedoch nichts darüber zu finden ist. Meiner Erfahrung nach gibt es aber wohl auch hier Ausnahmen von der Regel, also Dinge die zwar existieren aber auch mit .dbg_... nicht angezeigt werden, das dürften aber nur sehr wenige sein.



Gruß
Stephan

Re: [JAVA] URL seems to be an unsupported one

von felbi » Do, 06.05.2010 08:14

ja, tut es eigentlich. Es wäre besser gewesen einen neuen Thread zu eröffnen, ich habe jetzt aber auch keine Lust den post abzutrennen.
Tut mir leid. Vielen Dank, dass Du trotzdem geantwortet hast.
Nun bist Du wohl so schlau wie vorher, nur mehr kann ich dazu nicht sagen.
Im Gegenteil, diese Einschätzungen "zwischen den Zeilen" helfen mir sehr.

Nochmal kurz zum Developer's Guide für 3.2: Wann ist denn in der Regel mit diesem für eine neue Version zu rechnen, bzw. gibt es etwas Vergleichbares speziell für Version 3.2?

Re: [JAVA] URL seems to be an unsupported one

von Stephan » Do, 06.05.2010 00:21

ich hänge mich mal eben an Deinen Thread, obwohl mein Beitrag nicht wirklich eine Antwort auf Deine Fragen gibt. Das Thema geht aber in meine Richtung. Falls das gegen die Regeln verstößt, bitte ich um Nachsicht.
ja, tut es eigentlich. Es wäre besser gewesen einen neuen Thread zu eröffnen, ich habe jetzt aber auch keine Lust den post abzutrennen.
Ist es derzeit schon ratsam, für Version 3.2 zu entwickeln,


kann ich nicht konkret beantworten, prinzipiell würde ich aber (wenn nicht unbedingt nötig) nie die allerneueste Version nutzen aus der allgemeinen Vorsicht heraus das dort (weil sie neu ist) tendentiell etliche FEhler noch nicht bekannt sind
welche Version gilt allgemein für diesen Zweck als am stabilsten?
Auch das kann ich nicht wirklich beantworten, grundsätzlich würde ich wohl 3.0 vermeiden weil diese Version allgemein ziemlich fehlerträgig war.
Ich entwickle aktuell vielfach noch für 2.4.x, aber das ist sicher keine zu verallgemeinernde Regel.
Sprich: Sollte ich (aus API Sicht) lieber bei der 2er Version bleiben oder eine frühere 3er verwenden?
Darauf ("aus API Sicht") kann man sachlich nur antworten das das auch davon bestimmt ist ob Du API-Funktionen brauchst die erst in neueren Versionen existieren.
Frage jetzt aber nicht nach einer Übersicht, Du müßtest schlicht alte und neue IDL-Referenz durchsehen um zu prüfen wo es UNterschiede evtl. gibt. Nein, das ist natürlich nicht praktikabel, Du würdest also in Praxis im DEtail schauen wo es möglicherwise im Makro klemmt und dann nachsehen ob dort, an der konkreten Stelle, neuere Versionen Vorteile hinsichtlich der API bieten, größere Änderungen/Erweiterungen sind aber selten.

Wenn ich lese das:
Aufgabe des Programms ist lediglich das Laden diverser Vorlagen, Ersetzen von Benutzerfeldern/Textmarken und Drucken der Dokumente.
vermute ich aber nicht das eine neuere Version wegen möglicher neuerer API-Funktionen nötig wäre.



Nun bist Du wohl so schlau wie vorher, nur mehr kann ich dazu nicht sagen. Wenn ich beruflich Makros für OOo entwickle richte ich meine Entwicklung immer an der OOo-Version aus unter der mein Kunde die Makros später einsetzt, denn unter der müssen sie ja funktionieren.
SElten einmal ist es der Fall den Kunden bitten zu müssen die OOo-Version wegen der Makros zu wechseln, weil ganz bestimmte Dinge nur in bestimmten (oder erst ab bestimmten) Versionen gehen - es kommt aber hier immer auf den Einzelfall an.



Gruß
Stephan

Re: [JAVA] URL seems to be an unsupported one

von felbi » Mi, 05.05.2010 23:49

Hallo DerMajo,

ich hänge mich mal eben an Deinen Thread, obwohl mein Beitrag nicht wirklich eine Antwort auf Deine Fragen gibt. Das Thema geht aber in meine Richtung. Falls das gegen die Regeln verstößt, bitte ich um Nachsicht. :)

Ich überarbeite derzeit ein Programm, dass ich vor Jahren für eine 2er Version von OpenOffice geschrieben habe. Die Abläufe ähneln den von Dir beschriebenen zum großen Teil.

Damals hatte ich den OpenOffice Service wie folgt per Batch gestartet:

soffice -accept=socket,host=localhost,port=8100;urp; -invisible

Seit gestern habe ich die Version 3.2 installiert. Hier führt der Aufruf ab und zu zu Problemen: Sporadisch findet mein Programm keine Verbindung zum Service. Einen Versuch später geht es wieder. Wenn ich außerdem ein Textdokument öffnen lasse, bearbeite und VON HAND wieder schließe, beendet sich der OpenOffice Service. Das war in der alten Version meiner Erinnerung nach nicht der Fall.

In Deiner Problembeschreibung habe ich gesehen, dass Du den Service für 3.2 so startest:

soffice -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager -headless -norestore -display :1.0

Woher hast Du denn diese Informationen? Für OpenOffice.org 2.3 gabe es das PDF Developer's Guide, diesen kann ich für 3.2 nicht finden (zu neu?). Das entsprechende Wiki http://wiki.services.openoffice.org/wik ... pers_Guide gibt keinen Aufschluss, welche Versionen es abdeckt - zumindest habe ich diese Information bisher nicht gefunden.

Leider stehe ich wegen einer Deadline unter Zeitdruck, daher noch eine zweite Frage: Ist es derzeit schon ratsam, für Version 3.2 zu entwickeln, bzw. welche Version gilt allgemein für diesen Zweck als am stabilsten? Sprich: Sollte ich (aus API Sicht) lieber bei der 2er Version bleiben oder eine frühere 3er verwenden? Aufgabe des Programms ist lediglich das Laden diverser Vorlagen, Ersetzen von Benutzerfeldern/Textmarken und Drucken der Dokumente.

Besten Dank für jeden Hinweis

felbi

Re: [JAVA] URL seems to be an unsupported one

von DerMajo » Di, 30.03.2010 07:27

Schönen guten Morgen :D

Selbstverständlich hab ich es lokal getestet und es funktionierte so wie es soll. Bis darauf, dass die Versionsnummer 2.4 angezeigt wurde und mir versichert wurde, dass die 3.2 installiert ist. Hab mir nichts weiter dabei gedacht, da es normal aussah und auch stabil lief. Nunja, kann ich erstmal nur abwarten und hoffen.

Vielen Dank nochmal für deine Hilfe :)
Majo

Re: [JAVA] URL seems to be an unsupported one

von hol.sten » Mo, 29.03.2010 20:23

DerMajo hat geschrieben:Allerdings kümmert sich gerade unser System-Administrator um den Linux-Server-B, da dort die OpenOffice-Version wohl nicht 100%ig korrekt installiert gewesen war.
Hast du zur Abwechselung mal probiert, OOo lokal auf dem Linux-Server zu nutzen? So könntest du prüfen, ob es OOo dort überhaupt tut, bevor du anfängst es remote zu nutzen.

Re: [JAVA] URL seems to be an unsupported one

von DerMajo » Mo, 29.03.2010 08:44

Hallo :)

Vielen vielen Dank für den Hinweis! An soetwas hatte ich bisher noch garnicht gedacht. Ich werd es in der nächste Version unserer Applikation berücksichtigen. Ich denke allerdings in unabhängiger Form. Also einfach eine App, die auf Linux-Server-B läuft und sicher stellt, dass OpenOffice ordnungsgemäß funktioniert (also Speicher und Service prüft und bei Gelegenheit OpenOffice neustartet).

Mein Problem ist aber nach wie vor, dass ich den OpenOffice-Service eines WindowsXP Rechners lokal und über das Netzwerk nutzen kann aber über den Linux-Server nicht. Allerdings kümmert sich gerade unser System-Administrator um den Linux-Server-B, da dort die OpenOffice-Version wohl nicht 100%ig korrekt installiert gewesen war. Ich hoffe, dass es daran lag und mein Problem nach der korrekten Installation verschwunden ist :D

Trotzdem danke für den Tip.

Viele Grüße
Majo

Re: [JAVA] URL seems to be an unsupported one

von hol.sten » Sa, 27.03.2010 09:57

DerMajo hat geschrieben:Ich glaube du hast da etwas missverstanden
...
Ich hoffe, ich konnte mein Problem ausreichend schildern
Ich habe nichts missverstanden und dein "Problem" ist ausreichend geschildert. Ich zitiere mich mal eben selbst:
hol.sten hat geschrieben:Von diesen drei Teilen läuft deiner Meinung nach was wo?
a) Web-Applikation und Java-Anwendung, über die die Web-Applikation mit OOo kommuniziert, laufen auf Linux-Server 1 / OOo läuft auf Linux-Server 2
b) Web-Applikation läuft auf Linux-Server 1 / Java-Anwendung, über die die Web-Applikation mit OOo kommuniziert, und OOo laufen auf Linux-Server 2
Dein Plan liegt also sehr nah bei dem von mir genannten a). Allerdings hast du "nur" eine Web-Applikation auf Linux-Server 1, die mit OOo auf Linux-Server 2 kommunizieren will. Damit kommen wir nun wieder zu dieser Frage von mir, der du noch keine Aufmerksamkeit gewidmet hast:
hol.sten hat geschrieben:Andernfalls frage ich mich, wie du von deiner Java-Anwendung aus, über die die Web-Applikation mit OOo kommuniziert, OOo auf dem anderen Server starten, stoppen und restarten willst?
Ist dir bewusst, dass OOo nicht 100% zuverlässig läuft? Es kommt leider ab und zu vor (zumeist nach einigen tausend Konvertierungen), dass OOo abschmiert oder hängen bleibt und gar nicht mehr reagiert. Wenn das passiert, musst du dafür sorgen, dass OOo gekillt und restartet wird. Wie willst du das machen, wenn OOo auf einem anderen Server als deine Web-Applikation läuft? Außerdem gibt es seit Jahren in OOo Speicherlecks, die dafür sorgen, dass der OOo-Prozess mehr und mehr Resourcen frist: http://www.openoffice.org/issues/show_bug.cgi?id=41675

Ein gangbarer Weg ist der von mir knapp als Plan b) bezeichnete: Du entwickelst eine Java-Anwendung, die zusammen mit OOo auf Server 2 läuft und sich um folgendes kümmert:
- Starten, stoppen und restarten von OOo
- Warten auf und verarbeiten von Konvertierungsaufträgen
Diese Anwendung sprichst du z. B. über RMI von deiner Web-Anwendung aus an. Damit erreichst du, dass Web-Applikation und OOo auf verschiedenen Servern laufen, du hast die Möglichkeit, die Verfügbarkeit von OOo zu kontrollieren und für deine Java-Anwendung läuft OOo lokal und damit hat sich dein Exception-Problem auch erledigt.

Re: [JAVA] URL seems to be an unsupported one

von DerMajo » Fr, 26.03.2010 08:35

Hallo :)

Ich glaube du hast da etwas missverstanden bzw. habe ich mich nicht klar ausgedrückt. Meine Web-Applikation ist in Java implementiert. Die OpenOffice-Bibliothek werden dort benutzt.
java_uno.jar
juh.jar
jurt.jar
ridl.jar
unoloader.jar
unoil.jar
Und der OpenOffice-Service ist nichts weiter als ein normales OpenOffice. Nur dass es mit Parameter, wie von mir beschrieben gestartet wird, damit es im Hintergrund läuft (Unter Windows nennt man das Service). Dieser Service ist allerdings per Netzwerk zugänglich, da man ihn als eine Art OpenOffice-Server starten kann (wiederum durch Parameter).

Folgender Parameter erzeugt eine OpenOffice-Instanz, welches über das Netzwerk mit der OpenOffice-API angesteuert werden kann:
-accept=socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager
Diese Parameter lassen die OpenOffice-Instanz im Hintergrund laufen. Sonst würde man alle Aktionen wie "von Geisterhand ausgeführt" auf dem Server sehen, welche durch eine OpenOffice-API durchgeführt werden würden. Was genau die einzelnen Parameter bedeuten, weiß ich gerade nicht auswendig.
-headless -norestore -display :1.0
Im ganzen sieht der Befehl zum Starten von OpenOffice wie folgt aus (gibt man in die Konsole ein):
soffice -accept=socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager -headless -norestore -display :1.0
Somit habe ich einen Web-Server (für Java-Web-Applicationen auch Application-Server genannt), der auf dem Linux-Server-A läuft und einen OpenOffice-Server (von Aussen ist es ein Server, von der Linux-Maschine-B gesehen ein Service), der auf einem Linux-Server-B läuft. Von meiner Webapplication (also Linux-Server-A) connecte ich nun die OpenOffice-API (für Java, da meine WebApplication in Java geschrieben ist) auf dem OpenOffice-Server (der als Service auf Linux-Server-B gestartet wurde). Somit wird nun alles, was ich mit der OpenOffice-API in meiner WebApplication mache, vom OpenOffice-Server umgesetzt und zurück geliefert. Die OpenOffice-API ist bekanntlich die Schnittstelle von der jeweiligen Programmiersprache und dem OpenOffice.

Sobald ich den OpenOffice-Server vom Linux-Server-B benutzen will (also die IP und den Port des OpenOffice-Servers in meiner WebApplication zum connecten benutze: Object initialObject = xUnoUrlResolver.resolve("uno:socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager");) bringt meine WebApplication eine Exception. Allerdings tritt diese Exception nicht auf, wenn ich anstatt des OpenOffice-Service auf dem Linux-Server-B, OpenOffice lokal auf meiner Windows-Maschine als Service laufen lasse und meine IP (die der Windows-Maschine) in der WebApplication verwende. Nun ist mein Problem, dass ich nicht weiß, warum dem so ist. Die Exception tritt an der Stelle im Quellcode auf, an der die Appliaction schon mit dem OpenOffice-Server verbunden ist und den InputStream öffnen will.
Nach meiner Interpretation kann der OpenOffice-Server die URL "private:stream" nicht verarbeiten. Also könnte der OpenOffice-Server falsch gestartet wurden sein oder evtl. die Installation auf dem Linux-Server-B korrupt. Evtl. gibt es auch Einstellungen oder Parameter, die ich in meiner WebApplication zum connecten auf einen OpenOffice-Server, der unter Linux läuft, brauche und noch nicht verwende.

Ich hoffe, ich konnte mein Problem ausreichend schildern :-/ Ich weiß, dass es im ganzen keine Standard-Anwendung ist und auf dem ersten Blick etwas verwirrent erscheint. Die Anforderungen an die WebApplication sind nun mal so, dass ich mit allen mir zur Verfügung stehenden Mitteln und einem Großteil der Features der OpenOffice-API arbeiten muss.

Viele Grüße und ein schönes Wochenende :)
Majo

Re: [JAVA] URL seems to be an unsupported one

von hol.sten » Do, 25.03.2010 21:43

DerMajo hat geschrieben:
hol.sten hat geschrieben:D. h. Webapplikation und OOo laufen auf unterschiedlichen Rechnern oder auf dem gleichen Linux-Server? Das konnte ich deinem umfangreichen Post noch nicht entnehmen (weder diesem, noch dem in dem einen englischsprachigen Forum).
Also der OOo-Service soll auf einem anderen Linux-Rechner im selben Netzwerk wie der Application-Server laufen. Sind also physisch und logisch getrennte Systeme.
Was ist "der OOo-Service"? Ist das nur OOo oder ist darunter eine Java-Anwendung zu verstehen, die mit OOo kommuniziert?

Ok, ich frage nochmal anders: So wie ich das sehe, werden bei dir irgendwann einmal OOo, eine Web-Applikation und eine Java-Anwendung, über die die Web-Applikation mit OOo kommuniziert, laufen, oder? Von diesen drei Teilen läuft deiner Meinung nach was wo?
a) Web-Applikation und Java-Anwendung, über die die Web-Applikation mit OOo kommuniziert, laufen auf Linux-Server 1 / OOo läuft auf Linux-Server 2
b) Web-Applikation läuft auf Linux-Server 1 / Java-Anwendung, über die die Web-Applikation mit OOo kommuniziert, und OOo laufen auf Linux-Server 2
Ich hoffe, dass b) dein Plan ist. Andernfalls frage ich mich, wie du von deiner Java-Anwendung aus, über die die Web-Applikation mit OOo kommuniziert, OOo auf dem anderen Server starten, stoppen und restarten willst?

Re: [JAVA] URL seems to be an unsupported one

von DerMajo » Do, 25.03.2010 07:28

Hallo
hol.sten hat geschrieben:Ich habe schon einiges an Dateien mit OOo konvertiert, aber beim Öffnen von Dokumenten gebe ich nie einen Filter an. Hier habe ich mal ein Beispiel mit Streams gepostet: http://user.services.openoffice.org/en/ ... =44&t=3801
Ich habe dein geposteten Thread überflogen. Genau so oder ähnlich habe ich das mit den Input- und Outputstreams auch gelöst. Ich glaube sogar, ich habe diese Lösung aus dem Netz.
Was den Filter angeht, gebe ich den mit um unerwünschte Dateiformate nicht zu behandeln. Die Methode wird nicht nur beim erzeugen von Serienbriefen oder Standardbriefen benutzt, sondern auch beim upload von Dokumenten. Die Idee ist es, alle Dokumente die hochgeladen werden als PDF (unveränderbar) zu speichern. Somit auch Text- und CSV-Dateien. Und genau bei den beiden benötige ich einen Filter. Es ist richtig, dass ich an der von mir geposteten Stelle keinen "unbedingt" brauche aber vollständigkeitshalber ist er mit drin :)
Ich denke, hier ist auch nicht die Fehlerquelle, da die Umwandlung mit einem lokalen OpenOffice-Service funktioniert. Nichts desto trotz habe ich es mal getestet. Leider ohne Erfolg, der Fehler bleibt der Selbe.
hol.sten hat geschrieben:D. h. Webapplikation und OOo laufen auf unterschiedlichen Rechnern oder auf dem gleichen Linux-Server? Das konnte ich deinem umfangreichen Post noch nicht entnehmen (weder diesem, noch dem in dem einen englischsprachigen Forum).
Also der OOo-Service soll auf einem anderen Linux-Rechner im selben Netzwerk wie der Application-Server laufen. Sind also physisch und logisch getrennte Systeme.

Danke für deine Anregungen. Ich werd auch sogleich mal den engl. Thread erweitern.

Viele Grüße
Majo

Edit: Ich habe hier im Forum noch einen weiteren Thread erstellt, weil ich glaube, dass es nicht unbedingt etwas mit der Implementierung zu tun haben muss. Hier der Link: Debian, KDE 3.5 und OpenOffice 3.2

Re: [JAVA] URL seems to be an unsupported one

von hol.sten » Mi, 24.03.2010 23:28

DerMajo hat geschrieben:Damit ihr seht, wie die properties gefüllt werden und die Methode aufgerufen wird, hier der Teil des Quellcodes:

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);
...
Ich habe schon einiges an Dateien mit OOo konvertiert, aber beim Öffnen von Dokumenten gebe ich nie einen Filter an. Hier habe ich mal ein Beispiel mit Streams gepostet: http://user.services.openoffice.org/en/ ... =44&t=3801
DerMajo hat geschrieben:Nun soll jedoch der Service auf unserem Linux-Server laufen.
D. h. Webapplikation und OOo laufen auf unterschiedlichen Rechnern oder auf dem gleichen Linux-Server? Das konnte ich deinem umfangreichen Post noch nicht entnehmen (weder diesem, noch dem in dem einen englischsprachigen Forum).

[JAVA] URL seems to be an unsupported one

von DerMajo » 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.
soffice -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager -headless -norestore -display :1.0
Der Quellcode sah dementsprechend aus:

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;
    }
Damit ihr seht, wie die properties gefüllt werden und die Methode aufgerufen wird, hier der Teil des Quellcodes:

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);
            }
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.
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
Den Service habe ich nun wie folgt gestartet:
./soffice "-accept=socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager" -headless -norestore -display :1.0
Dem entsprechend habe ich auch die URL im Quellcode geändert:

Code: Alles auswählen

        Object initialObject =
            xUnoUrlResolver.resolve("uno:socket,host=10.22.0.30,port=8100;urp;StarOffice.ServiceManager");
Nun tritt die Exception auf
com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
und zwar an dieser Stelle:

Code: Alles auswählen

        XComponent documentToStore =
            xcomponentloader.loadComponentFromURL("private:stream", "_blank",
                                                  0, openProperties);
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

Nach oben