Java Funktuion aus Xbase aufrufen
Moderator: Moderatoren
-
- Rookie
- Beiträge: 12
- Registriert: Mo, 01. Sep 2008 9:51
Java Funktuion aus Xbase aufrufen
Hallo zusammen
Ich habe ein altes Xbase Programm.
Aus diesem möchte ich nun eine Funktion aufrufen, die in Java geschrieben ist.
Hat irgendwer sowas schonmal gemacht oder weiß wie es geht?
Danke schonmal im vorraus.
Gruß
Ichbindabei
Ich habe ein altes Xbase Programm.
Aus diesem möchte ich nun eine Funktion aufrufen, die in Java geschrieben ist.
Hat irgendwer sowas schonmal gemacht oder weiß wie es geht?
Danke schonmal im vorraus.
Gruß
Ichbindabei
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Java Funktuion aus Xbase aufrufen
Hi,
da bleibt die Frage offen, ob diese JAVA Funktion nach Xbase++ umgesetzt werden kann
oder ob man aus Xbase++ heraus auf die Java-Runtime soll ?
Der erste Fall ist recht einfach, solange man den Quellcode hat, java versteht und keine exotischen Sachen benötigt werden ...
da bleibt die Frage offen, ob diese JAVA Funktion nach Xbase++ umgesetzt werden kann
oder ob man aus Xbase++ heraus auf die Java-Runtime soll ?
Der erste Fall ist recht einfach, solange man den Quellcode hat, java versteht und keine exotischen Sachen benötigt werden ...
Gruß
Hubert
Hubert
-
- Rookie
- Beiträge: 12
- Registriert: Mo, 01. Sep 2008 9:51
Re: Java Funktuion aus Xbase aufrufen
Nein so einfach ist das leider nicht.
Ich brauche den 2. Teil.
Ich habe ein in Java geschriebenes Programm und möchte dieses aus Xbase aufrufen.
Dabei muss aber sichergestellt sein das es im Xbase erst dann weiter geht, wenn man aus dem java wieder zurück springt.
Schön wäre es wenn ich das Java Programm wie eine Funktion in einer DLL aufrufen könnte.
Ich brauche den 2. Teil.
Ich habe ein in Java geschriebenes Programm und möchte dieses aus Xbase aufrufen.
Dabei muss aber sichergestellt sein das es im Xbase erst dann weiter geht, wenn man aus dem java wieder zurück springt.
Schön wäre es wenn ich das Java Programm wie eine Funktion in einer DLL aufrufen könnte.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Java Funktuion aus Xbase aufrufen
ob das geht weiß ich nicht, aber ich könnte mir vorstellen, dass man mit RunShell() arbeiten könnte.ichbindabei hat geschrieben:Schön wäre es wenn ich das Java Programm wie eine Funktion in einer DLL aufrufen könnte.
Wenn der Parameter lAsync := .f. ist, wartet das Xbase++ Programm auf das Ende des aufgerufenen Programmes.
Bei Phil gibt es eine Abwandlung, die sogar Ergebnisse direkt in Variablen übergibt.
Wenn dur nur den Rückgabewert brauchst und die Parameter in der Befehlszeile übergeben kannst, geht das gut.
Ansonsten musst du über Zwischenspeicher nachdenken.
Gruß
Hubert
Hubert
Re: Java Funktuion aus Xbase aufrufen
Was kann denn ein Java-Programm was Xbase nicht kann?
Gruß
Alfred
Gruß
Alfred
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Re: Java Funktuion aus Xbase aufrufen
Ich habe Anwendungen unter .NET realisiert, die wiederum Fremdanwendungen über ActiveX bzw. DCOM aufrufen und steuern um z.B. Daten von Fremdanwendungen in ein xBase zu importieren.
Die .NET-Anwendungen wiederum speichern die Daten aus Fremdanwendungen in Dateien, die benutzerabhängig in entprechende Pfade abgelegt werden. Die xBase-Anwendung wiederum liest diese Dateien ein und wertet sie aus. Der Aufruf der .NET-Anwenunge erfolgt über runshell() im synchronen Modus. Daten von xBase an .NET-Anwendungen werden über Ini-Files übergeben, die dann eingelesen werden.
Im Prinzip sollten diese Verfahren auch für JAVA-Anwendungen angewandt werden können. Bis auf den Umstand, dass manche externe Anwendungen, die ein DCOM-Service bereit stellen, nach Beendigung der Transaktion nicht ordnungsgemäß aus dem Speicher entfernt werden und es bei einem erneuten Aufruf zu Problemen kommen kann", funktioniert das angesprochene Verfahren im Praxiseinsatz stabil. Das Problem mit der Speicherentfernung habe ich insofern lösen können, dass mittels API-Funktionen die ensprechenden Task beenden werden bevor die Fremdanwendung erneut über .NET aufgerufen wird.
Gruß, Olaf
Die .NET-Anwendungen wiederum speichern die Daten aus Fremdanwendungen in Dateien, die benutzerabhängig in entprechende Pfade abgelegt werden. Die xBase-Anwendung wiederum liest diese Dateien ein und wertet sie aus. Der Aufruf der .NET-Anwenunge erfolgt über runshell() im synchronen Modus. Daten von xBase an .NET-Anwendungen werden über Ini-Files übergeben, die dann eingelesen werden.
Im Prinzip sollten diese Verfahren auch für JAVA-Anwendungen angewandt werden können. Bis auf den Umstand, dass manche externe Anwendungen, die ein DCOM-Service bereit stellen, nach Beendigung der Transaktion nicht ordnungsgemäß aus dem Speicher entfernt werden und es bei einem erneuten Aufruf zu Problemen kommen kann", funktioniert das angesprochene Verfahren im Praxiseinsatz stabil. Das Problem mit der Speicherentfernung habe ich insofern lösen können, dass mittels API-Funktionen die ensprechenden Task beenden werden bevor die Fremdanwendung erneut über .NET aufgerufen wird.
Gruß, Olaf
-
- Rookie
- Beiträge: 12
- Registriert: Mo, 01. Sep 2008 9:51
Re: Java Funktuion aus Xbase aufrufen
Die lösung mit RunShell() scheint zu klappen
allerdings schaffe ich es nicht die .jar datei direkt zu starten sondern starte sie über eine cmd.
aber zumindes wartet Xbase so bis java wieder beendet wird.
java muss es deswegen sein weil meine kollegen zum teil nur java können.
Danke für die hilfreichen antworten.
wenn noch jemand weiß wie ich direkt die .jar datei starten kann wär das noch hilfreich ansonnsten bleibt die cmd halt dazwischen.
allerdings schaffe ich es nicht die .jar datei direkt zu starten sondern starte sie über eine cmd.
aber zumindes wartet Xbase so bis java wieder beendet wird.
java muss es deswegen sein weil meine kollegen zum teil nur java können.
Danke für die hilfreichen antworten.
wenn noch jemand weiß wie ich direkt die .jar datei starten kann wär das noch hilfreich ansonnsten bleibt die cmd halt dazwischen.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Java Funktuion aus Xbase aufrufen
Also ich hab hier so eine Batchdatei, in der wird die jar-Datei einfach aufgerufen mit:
java -xxx.jar - und ein Haufen Parameter dahinter.
Das sollte dann mit Runshell etwa so funktionieren:
para:="meinjavaprog.jar"
prog:="C.\windows\system32\java.exe"
Runshell(para, prog,.F.)
java -xxx.jar - und ein Haufen Parameter dahinter.
Das sollte dann mit Runshell etwa so funktionieren:
para:="meinjavaprog.jar"
prog:="C.\windows\system32\java.exe"
Runshell(para, prog,.F.)
Viele Grüße
Wolfgang
Wolfgang
-
- Rookie
- Beiträge: 12
- Registriert: Mo, 01. Sep 2008 9:51
Re: Java Funktuion aus Xbase aufrufen
ne geht leider nicht
passiert irgendwie garnichts wenn ich das versuche
passiert irgendwie garnichts wenn ich das versuche
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Java Funktuion aus Xbase aufrufen
Wenn Du als vierten Parameter (lBackGround) bei RunShell() .T. angibst, sieht man die CMD-Box immerhin nicht mehr.
Eigentlich müsste das auch über/mit RunDll gemacht werden können, wenn der Java-Interpreter als Standardprogramm festgelegt ist.
Eigentlich müsste das auch über/mit RunDll gemacht werden können, wenn der Java-Interpreter als Standardprogramm festgelegt ist.
Herzlich,
Tom
Tom
-
- Rookie
- Beiträge: 12
- Registriert: Mo, 01. Sep 2008 9:51
Re: Java Funktuion aus Xbase aufrufen
ja ich denke das ich es auch mit der batch machen werde
danke an alle
danke an alle