[PHP5] PHP-Java-Bridge

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [PHP5] PHP-Java-Bridge

    Hallo,

    hat jemand schon mal mit PHP-Java-Bridge gearbeitet, vor allem mit der Version 4.0.1. Es gibt im Netz so viel Hilfe zur Installation und Test aber bei mir funktioniert nichts.

    Meine erste Frage wäre:
    Mit welchen Versionen von Apache und PHP ist Bridge kompatibel?

    Braucht man kein PHP_Java.dll mehr, weil es im Paket nicht mehr dabei ist.

    Wenn ich die Einstellungen in php.ini gemacht habe, muss ich noch was tun, bevor ich ein Test ausführen kann?

    Ich hoffe, dass es zu beantwortende Fragen sind. Wäre sehr dankbar für Hilfe.

    Gruß
    anms

  • #2
    zu den versionen steht hier einiges: http://de3.php.net/manual/en/ref.java.php

    nach dem editieren von php.ini muss man den webserver neustarten.

    Kommentar


    • #3
      Also erstmal stellt sich die Frage, welche PHP-Java-Bridge du überhaupt verwenden möchtest. Es gibt ja einmal die "offizielle", die im PHP-Handbuch beschrieben wird, aber die ist derartig schlecht dokumentiert und funktions-unfähig, dass man sie getrost als nicht existierend betrachten kann.
      Da du Version 4.0.1 erwähnt hast, gehe ich mal davon aus, dass du die PHP/Java Bridge aus dem Projekt bei Sourceforge meinst. Das ist allerdings soweit ich weiß etwas anderes als die im Handbuch beschriebene Bridge - und von daher solltest du das, was im Handbuch steht, ignorieren.
      Bei dem Download (Binary von dem SF.net Projekt) ist eine recht ausführliche README-Datei bei, und die hat mir soweit geholfen, das es lief. Man muss dafür auch weder eine PHP-Extension installieren, noch irgendwelche Änderungen an der php.ini vornehmen.
      Ich hab das allerdings nur für einen sehr kleinen Test verwendet und keine ernsthafte Installation durchgeführt.
      hopka.net!

      Kommentar


      • #4
        Hallo Hopka,

        schön dank für die Antwort. Ja ich verwende (zumindest versuche ich es) die PHP/Java Bridge aus dem Projekt bei Sourceforge. Die Anleitung hilft mir leider nicht weiter, zumindest funktioniert es bei mir nicht.

        Nochmal eine kurze Beschreibung, was ich gemacht habe.

        Ich verwende

        OS: XP
        Apache: 2.2.4
        PHP: 5.2.1
        JDK: 1.5.0.10
        PHP-Java-Bridge: 4.0.1

        1. Habe als erstes aus pecl die php_java.dll in PHP\ext kopiert.
        2. php.ini wie folgt angepasst:

        extension=php_java.dll

        ;;;;;;;;;;;;;;;;;;;
        ; Module Settings ;
        ;;;;;;;;;;;;;;;;;;;

        [java]
        java.home="C:\Programme\Java\jdk1.5.0_10"
        java="C:\Programme\Java\jdk1.5.0_10\bin\javaw.exe"
        java.class.path="C:\Programme\PHP\ext\JavaBridge.jar"
        java.library="C:\Programme\Java\jdk1.5.0_10\jre\bin\client\jvm.dll"
        java.library.path="C:\Programme\PHP\ext\"
        java.log_level=3

        3. JavaBridge.jar in PHP\ext kopiert
        4. ein phpinfo() zeigt auch alles korrekt an, außer Java Support enabled. Habe aber erfahren, dass php5 den support eingestellt hat.

        Wenn ich die Beispiele ausfuhren möchte, z.B.

        <?php

        // get instance of Java class java.lang.System in PHP
        $system = new Java('java.lang.System');

        // demonstrate property access
        echo 'Java version=' . $system->getProperty('java.version') . '<br/>';
        echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br/>';
        echo 'OS=' . $system->getProperty('os.name') . ' ' .
        $system->getProperty('os.version') . ' on ' .
        $system->getProperty('os.arch') . ' <br/>';

        // java.util.Date example
        $formatter = new Java('java.text.SimpleDateFormat',
        "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

        echo $formatter->format(new Java('java.util.Date'));

        ?>

        bricht mein Apache mit der Meldung "Apache HTTP Server hat ein Problem festgestellt und muss beendet werden" und dann "Fehler: Netzwerk-Zeitüberschreitung".

        Was mache ich falsch? Was passt da nicht? Wäre für jede Hilfe dankbar!

        Gruß
        Anna

        Kommentar


        • #5
          Was du falsch machst: du verwendest php_java.dll
          Also lösche die Datei wieder und mache die Änderungen an deiner php.ini rückgängig.

          Wie ich es gemacht habe:

          Windows XP, Apache 2.0.58, PHP 5.2.0, JDK 1.5.0.07, PHP-Java-Bridge 4.0.2

          Hab mir die 4.0.2 Binary der PHP-Java-Bridge runtergeladen und entpackt. Dann mit einer Shell (cmd.exe) in den Ordner gewechselt und java -jar JavaBridge.war eingegeben. Dadurch entsteht eine Datei RESULT.html, wo die Ausgabe von phpinfo gefolgt von einigen Java-Infos steht. Dann habe ich im Unterordner ext die Datei JavaBridge.jar durch Doppelklick gestartet, SERVLET_LOCAL:8080 ausgewählt (war schon automatisch ausgewählt) und OK geklickt.
          Als nächstes habe ich folgendes PHP-Script im Browser aufgerufen:
          PHP-Code:
          <?php
              
          require_once("http://localhost:8080/JavaBridge/java/Java.inc");
              
          $s = new Java("java.lang.System");
              
          var_dump($s->nanoTime());
          ?>
          Das, was er da per require_once lädt, wird durch die JavaBridge.jar bereitgestellt. Vermutlich musst du vorher in der php.ini noch allow_url_include ON setzen, weil sonst das require_once nicht erlaubt ist.

          Die php_java.dll aus PECL ist (vermutlich - Dokumentation ist hier leider Mangelware) teil einer völlig anderen PHP-Java Bridge und sollte daher nicht verwendet werden. Die PHP-Java Bridge von Sourceforge gibt es zwar auch als PHP-Extension, aber soweit ich weiß nicht vorkompiliert für Windows.
          hopka.net!

          Kommentar


          • #6
            1)java Bridge kannst du nicht bei jedem Anbieter installieren, und auch dann wird es langsam laufen.
            2)wenn du ein root server hast, dann kannst du auch JBoss oder Jakarta installieren.
            und wenn du das kannst, dann gibt es überhaupt kein Grund aus PHP auf Java zuzugreifen, sondern man schreibt ein servlet
            oder integriert PHP in JSP(was auch nicht besonder nötig ist, da Java auch ziemlich viel bietet).
            Zuletzt geändert von Slava; 17.03.2007, 18:58.
            Slava
            bituniverse.com

            Kommentar


            • #7
              Ich danke Euch alle für die schnelle Antworten. Die helfen mir sehr.

              Ich bin gezwungen von PHP aus Java anzusprechen (Uni-Vorgaben).

              Die Bridge scheint zu funktionieren, ein ganz großes DANKESCHÖN!!!

              Hoffe, dass das meine letzte Frage ist. Wieso funktioniert dann java_require nicht? Damit möchte ich jar-Files ansprechen. Ich bekomme die Fehlermeldung:
              Fatal error: Call to undefined function java_require() in C:\Programme\Apache Software Foundation\Apache2.2\htdocs\java2.php on line 5

              die PHP-Datei dazu:

              <?php

              //Einbinden der JAVA-Bibliothek
              java_require("HelloWorld.jar");

              // Instantiieren der JAVA-Klasse
              $myObj = new Java('HelloWorld');

              // Anzeige des übergebenen Strings
              echo (String) $myObj->getHelloWorld();

              ?>

              HelloWorld.jar befindet sich natürlich in C:\Programme\Apache Software Foundation\Apache2.2\htdocs

              Muss ich wieder irgendwas in php.ini aktivieren?

              Für eine Antwort wäre ich sehr dankbar!

              Gruß
              Anna

              Kommentar


              • #8
                kann es sein das die bridge nicht richtig in php geladen wird (als extension?) die funktion scheint ja nicht zu existieren - probiers evtl mal mit require (http://php-java-bridge.sourceforge.n...i/java_8c.html)
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Hallo,

                  ich glaube, dass die Bridge nicht funktioniert. Habe gerade ein Beispiel versucht und habe folgende Fehlermeldung bekommen:

                  Fatal error: Class 'Java' not found in C:\Programme\Apache Software Foundation\Apache2.2\htdocs\java1.php on line 4

                  Die datei dazu ist wie folgt:

                  <?php

                  // get instance of Java class java.lang.System in PHP
                  $system = new Java('java.lang.System');

                  // demonstrate property access
                  echo 'Java version=' . $system->getProperty('java.version') . '<br/>';
                  echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br/>';
                  echo 'OS=' . $system->getProperty('os.name') . ' ' .
                  $system->getProperty('os.version') . ' on ' .
                  $system->getProperty('os.arch') . ' <br/>';

                  // java.util.Date example
                  $formatter = new Java('java.text.SimpleDateFormat',
                  "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

                  echo $formatter->format(new Java('java.util.Date'));

                  ?>

                  Noch was. Die von der JavaBridge.war erzeugte RESULT.html enthält überhaup keine Information über Java. Ist das so korrekt?

                  Weiß jemand mir zu helfen? Bitte, bitte

                  Gruß
                  Anna

                  Kommentar


                  • #10
                    Hallo liebe Leute,

                    das Problem scheint gelöst zu sein.

                    Das ganze Geheimnis war, dass ich bei jeder php-Datei
                    require_once("http://localhost:8080/JavaBridge/java/Java.inc");
                    einfügen musste.

                    Jetzt habe ich drei neue, hoffentlich aber kleine Fragen.

                    1. Was hat diese Java.inc in sich und warum muss es jedes mal eingefügt werden?

                    2. Warum erschint meine Ausgabe immer in [] mit o(String):, wie z.B.
                    Java version=[o(String):"1.6.0"]

                    3. Warum muss ich jedes mal vor dem Ausführen JavaBridge.jar neu starten. Wie kann ich diesen Vorgang automatisieren?

                    Ach ja, noch ein kleines Problem.

                    Bei mir ist der Port 8080 schon mir Oracle besetzt. Wie kann ich das ändern (ist egal, ob bei Oracle oder bei JavaBridge).

                    Für Antworten bedanke ich mich im Voraus.

                    Liebe Grüße
                    Anna

                    Kommentar


                    • #11
                      Jetzt mal so als Frage, weil ich ein Unwissender bin:

                      ist es dann theoretisch möglich alles über PHP auszugeben und die Verbindung mit der DB herrzustellen und mit Java dann komplexe Berechnungen anzustellen??
                      oder ist das nur mit PHP & SQL performanter?

                      Im klartext:

                      Ich müsste in php endlos viele Schleifen aufrufen, aber das will ich nicht deshalb gebe ich den array oder was auch immer an Java weiter, welches das dann für mich berechnet?
                      Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                      - ...und solche Behauptungen in "falsches Resourcenmanagement"

                      Kommentar


                      • #12
                        Original geschrieben von zerni
                        Jetzt mal so als Frage, weil ich ein Unwissender bin:
                        Ich müsste in php endlos viele Schleifen aufrufen, aber das will ich nicht deshalb gebe ich den array oder was auch immer an Java weiter, welches das dann für mich berechnet?
                        und in Java muss du keine schleifen programmieren?
                        ist aber egal,
                        du kannst JavaBridge benutzen, oder deine Java-anwendung über exec laufen lassen, oder auch die PHP finktionen für Java zugriffe benutzen .
                        Perfomance massig, ist aber keine von diesen Lösungen richtig gut.

                        wenn Java, dann richtg! Also servlet, bzw JSP schreiben.
                        Slava
                        bituniverse.com

                        Kommentar


                        • #13
                          hmm ja nur haben wenig Anbieter nen Tomcat server laufen

                          außerdem ist eine kompilierte Javadatei doch wohl schneller im Schleifen abarbeiten als php oder?
                          Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                          - ...und solche Behauptungen in "falsches Resourcenmanagement"

                          Kommentar


                          • #14
                            uuh, jetzt wird's pauschal..

                            Kommentar


                            • #15
                              naja, dass son Java-PHP nix halbes und nix ganzes ist, war mir schon klar!

                              Aber warum mach ich dann sowas?! ich verstehe den Nutzen nicht, wenn nicht die Performance?
                              Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                              - ...und solche Behauptungen in "falsches Resourcenmanagement"

                              Kommentar

                              Lädt...
                              X