2011-03-22 8 views
5

Mam problemy z prawidłowym skonfigurowaniem konfiguracji Php-Java Bridge.Praca z mostkiem Php-Java

Wyjaśnię, co zrobiłem.

  • Moja strona jest w czystym PHP
  • Dla naszego procesu transakcji płatniczej musimy założyć mostek php-java
  • Śledziłem ten link konfiguracji mostu PHP-JAVA BRIDGE INSTALATION.
  • Tutaj dowiedziałem się, że Potrzebuję prywatnego jvm do zainstalowania mostu.
  • Więc 1 zainstalowałem apache-tomcat-6.0.14 w prywatnej maszynie JVM przy użyciu mojego panelu c. Po instalacji poprosił mnie o Mapowanie domeny do prywatnej maszyny JVM. Więc zmapowałem do niej moją domenę example.com (która jest jedyną dostępną opcją).
  • Następnie poprosił o włączenie przekierowania ruchu z serwera WWW Apache do mojego serwera aplikacji Java (było pole wyboru i kliknąłem)
  • W końcu poprosił mnie o wdrożenie pliku WAR (JavaBridge.WAR był moim plikiem) i wszystko wydaje się w porządku
  • Teraz, kiedy idę do http://example.com/JavaBridge/ widziałem przykłady javabridge i działa dobrze.

tej pory tak dobrze

Teraz mój problem zaczyna się tutaj podczas próby uzyskania dostępu do pliku klasy Java z php. Próbka test.php jest tym, co tworzę i umieszczam w nim następujący kod.

<?php 
     require_once("http://example.com:portnumber/JavaBridge/java/Java.inc"); 
     $System = java("java.lang.System"); 
     echo $System->getProperties(); //This Part echo's correctly and shows the data so it means i can access Java.inc Correctly 

     $path_e24class = getcwd(). '/e24PaymentPipe.class'; //This part fails both test.php and java class file e24PaymentPipe.class are in the same directory in publich_html folder 
     java_require($path_e24class); 
     $pipe = new Java("e24PaymentPipe"); 
     $pipe->setAction("1"); 
?> 

Moi zawartość witryny znajdują się w folderze public_html i plik WAR są wdrażane w prywatnej JVM.

To są komunikaty o błędach.

1) Warning: java_require() not supported anymore. Please use tomcat or jee hot deployment instead 
    Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new e24PaymentPipe. Cause: java.lang.ClassNotFoundException: e24PaymentPipe VM: [email protected]://java.sun.com/" at: #-10 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) #-9 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) #-8 
java.lang.Class.forName0(Native Method) #-7 
java.lang.Class.forName(Class.java:247) #-6 
php.java.bridge.Util.classForName(Util.java:1518) #-5 
php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-4 
php.java.bridge.Request.handleRequest(Request.java:458) #-3 
php.java.bridge.Request.handleRequests(Request.java:500) #-2 
php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1 
php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0 
http://example.com:portnumber/JavaBridge/java/Java.inc(232): java_ThrowExceptionProxyFactory->getProxy(3, 'java.util.Prope...', 'T', false) #1 

Wreszcie nie wiem zbyt wiele o java. Więc utknąłem tutaj nie wiedząc, co robić.

+0

Czy byłeś w stanie rozwiązać problemy z 'java_require()'? – Kit

Odpowiedz

3

Oto świetny krok po kroku tutorial można śledzić, który pokazuje wszystko, co jest wymagane! Jest trochę stary (2007), ale pomógł mi jakiś czas temu.

Istnieje również inna opcja. Możesz zainstalować Apache Tomcat i wdrożyć tam swoją wojnę. Możesz mieć wiele instancji tomcat jednocześnie z twoim httpd działającym w tym samym czasie na tym samym komputerze, o ile przestrzegasz ustawień portu. Możesz nawet ich użyć z httpd Apache.

+0

Dziękuję za ten wspaniały samouczek ... ale nadal mam pewne wątpliwości ... jak próbuję skonfigurować to na serwerze na żywo, który bazuje na Linuksie .... a tutorial tutaj jest dla Windows XP .... więc może to też należy do serwera Linux ... –

+0

@Scrappy Cocco: Świetnie, że Ci się podobało! Przekonasz się, że rzeczy są na szczęście zaskakująco identyczne między oknami i linuxem. Musisz zastąpić ".dll" przez ".so", znak separacji ścieżek "\" z "/", a katalogi znajdują się w różnych miejscach, ale łatwe do naśladowania. Po tym, jak wszystkie okna skopiowały wiele konwencji używanych w Uniksie. –

+0

@CostisAivalis - Czy znasz pracę związaną z błędem 'require_java()' wymienionym powyżej? – Kit

0

Możesz spróbować; umieść JavaBridge.jar w katalogu lib tomcat, np. apache-tomcat-7.0.12/lib.

Restart serwera Tomcat, a następnie

$pipe = new java("com.aciworldwide.commerce.gateway.plugins.e24PaymentPipe"); 
$pipe->setAction("1"); 

ten sposób stworzyłem wersję php obiektu.

0

Dlaczego nie można umieścić w ścieżce klasy klasę e24PaymentPipe swojej aplikacji Java i pominąć poniższe dwie linie:

// $path_e24class = getcwd(). '/e24PaymentPipe.class'; 
// java_require($path_e24class); 

$pipe = new java("fully.qualified.classpath.e24PaymentPipe"); 

Jesteś mieszanie operacji boczne i boczne PHP Java. teoretycznie java_require (która jest przestarzała) została zaprojektowana do pracy po stronie Java. Podajesz ścieżkę po stronie PHP.

2

można spróbować to:

  1. pakiet kodzie jar, a następnie skopiować go do java.ext.dirs które można znaleźć w JavaBridge.log
  2. skopiować pokrewnych bibliotek klas do java.ext .dirs
  3. ponownie uruchomić usługę JavaBridge

powodzenia!

<?php require_once("JavaBridge/java/Java.inc"); 
    try {  
    $hd = new java("hdfs.HDFS");  
    $hd->get("hdfs://master:9000/user/hadoop/test-in/logo_cn.png", "/home/hadoop/1.png"); 
    } catch (JavaException $ex) { echo "An exception occured: "; echo $ex; echo "<br>\n";} 
?> 
0

można zaoszczędzić dużo żalu za pomocą pure PHP implementation biblioteki e24PaymentPipe.

Zastrzeżone

Link jest moim github repo biblioteki, ale nie pisać. Zajrzyj do readme w celu uzyskania oryginalnych kredytów.

2

Możesz użyć tego php implementation on github, który działa z php 5.3.

Zobacz informacje na temat pliku git readme, aby uzyskać więcej informacji.