tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
2086
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Wie kann ich aus Perl/Cgi ein Java Programm starten?
    Ich weiß schon das ich dabei das Perl/Cgi Script den Classpath meiner VM kennen muss allerdings habe ich keine Ahnung von Cgi/Perl so das ich nicht weiß wie ich dem Script diesen angebe. Dazu muss ich noch wissen wie ich das Programm dann starte und wie ich zum Beispiel Werte aus GET oder POST mit an das java programm übergeben kann. Würde mich sehr freuen über entsprechende Code Fragmente oder auch Links wo ich etwas darüber finden kann. Bin mittlerweile ziemlich verzeifelt und habe schon einige Stunden gegoogelt aber entweder nach falschen Begriffen oder es gibt einfach nichts. Resultat war das ich nichts gefunden habe
    MFG Steff
     

  2. #2
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    Beispielcode:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #! /usr/bin/perl
     
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
     
    my $cgi = CGI->new(); # initialisiere neues CGI-Objekt
    my %params = $cgi->Vars(); # lese die Parameter aus GET oder POST
    print $cgi->header(-type => 'text/html'); # gebe Header aus
     
    print $cgi->start_html();
    my $java_file = '/path/to/java_file';
    my $java_path = '/irgendwas/java';
    open(S_JAVA,"$java_path $java_file $params{parameter_fuer_java} $params{noch_ein_parameter} |") or die $!;
    while(my $line = <S_JAVA>){ # so lange das Java-Prog. Ausgaben macht
      print $line,"<br />"; # gebe sie aus...
    }
    close S_JAVA;
    print $cgi->end_html();
     

  3. #3
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Noch ein paar kurze Fragen zu dem Script:

    1. $java_file ist die datei die ich ausführen will ist das richtig?

    2. $java_path der Classpath der JVM

    3. $params{parameter_fuer_java} die Parameter aus Get bzw. Post

    Danke fuer die Hilfe. MFG Steff

    P.s. kann man den Pfad zu den Dateien nur relativ oder auch absolut angeben? Und funktioniert das alles so auch unter windows?
     

  4. #4
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    1.) richtig
    2.) richtig
    3.) richtig (bzw. _ein_ Parameter mit dem Namen "parameter_fuer_java")
    4.) kann man sowohl absolut als auch relativ angeben. Läuft auch unter Windows.
     

  5. #5
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    #!D:\webserver\perl\bin\perl.exe
     
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
     
    my $cgi = CGI->new(); # initialisiere neues CGI-Objekt
    my %params = $cgi->Vars(); # lese die Parameter aus GET oder POST
    my $method = $ENV{'REQUEST_METHOD'};
    my $query_string = $ENV{'QUERY_STRING'};
    my $content_length = $ENV{'CONTENT_LENGTH'};
     
    print $method,"<br/>";
    print $query_string,"<br/>";
    print $content_length,"<br/>";
     
    print $cgi->header(-type => 'text/html'); # gebe Header aus
     
    print $cgi->start_html();
    my $java_file = 'D:\webserver\htdocs\ProPra\cgi-bin\Props';
    my $java_path = 'D:\webserver\htdocs\j2sdk\bin\java';
    open(S_JAVA,"$java_path $java_file $method $query_string $content_length") or die $!;
    while(my $line = <S_JAVA>){ # so lange das Java-Prog. Ausgaben macht
      print $line,"<br />"; # gebe sie aus...
    }
    close S_JAVA;
    print $cgi->end_html();

    Kannst du mir vieleicht sagen wo hier mein Fehler ist? Wäre echt super.
    Bekomme immer nen Fehler von wegen invalid Argument on line 23.
    Greetz Steff
     

  6. #6
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    Da fehlt noch die Pipe am Ende des Aufrufs (siehe meine Beispielcode)!
     

  7. #7
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Nur eine Anmerkung:

    Wenn die Seite viel aufgerufen wird, solltest du dies nicht machen. Denn jedesmal wenn das Programm gestartet wird, startet auch gleich eine komplette Virtuelle Maschiene.
    Das kann sich katastrophal auf die Performance auswirken wenn 20 Virtuelle Maschienen laufen.
    Hast du den Quellcode (oder API zugriff) dann handle das Java Programm lieber innerhalb eines Servlet Containers ab. Denn da läuft die VM permanent und muss nicht gestartet werden.
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  8. #8
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Danke fuer die Antworten das Problem ist das wir vom Programmier Praktikum an der Uni her das so machen sollen und kein Servlet schreiben sollen daher muss ich es so machen. Es wird wohl auch keine Seite die viele Leute gleichzeitig besuchen werden. Da es sich eher darum handelt zu zeigen wie man eine Gui mit einem html Interface austauschen kann.
    Greetz Steff
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 05.03.08, 15:10
  2. Java Programm ohne Java starten ?
    Von Frankster im Forum Java
    Antworten: 9
    Letzter Beitrag: 04.08.05, 15:49
  3. perl externes programm starten & prozess
    Von pking im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 0
    Letzter Beitrag: 17.05.05, 07:48
  4. perl-programm per icon starten
    Von hudo im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 04.12.03, 12:14
  5. [HTML / JS] Wie kann ich mit HTML / JavaScript ein Programm starten?
    Von Andreas Gaisbauer im Forum Webmaster FAQ
    Antworten: 0
    Letzter Beitrag: 05.08.03, 16:01