2011-03-22 54 views
5

Tengo problemas para configurar correctamente la configuración Php-Java Bridge.Trabajar con Php-Java Bridge

Explicaré lo que he hecho.

  • Mi sitio está en php puro
  • Para nuestro proceso de transacción de pago que necesitamos para establecer un puente php-java
  • seguí este enlace para configurar el puente PHP-JAVA BRIDGE INSTALATION.
  • Aquí aprendí que yo necesita tener un jvm privado para instalar el puente.
  • Así que primero instalé Apache-tomcat-6.0.14 en Private JVM usando mi panel c. Después de la instalación, me pidió que asignara un dominio a una JVM privada. Así que mapeé mi dominio example.com (que es la única opción disponible) para él.
  • Luego solicitó habilitar una redirección de tráfico del servidor web Apache a mi servidor de aplicaciones Java (había una casilla de verificación y yo hice clic)
  • Finalmente me pidió que desplegara el archivo WAR (JavaBridge.WAR era mi archivo) y todo parece estar bien
  • Ahora cuando voy a http://example.com/JavaBridge/ pude ver los ejemplos de javabridge y funciona bien.

hasta ahora tan bueno

Ahora mi problema comienza aquí cuando intento acceder a un archivo de clase Java desde php. Una muestra test.php es lo que creo y pongo el siguiente código en él.

<?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"); 
?> 

Los contenidos de mi sitio residen en la carpeta public_html y el archivo WAR se implementa en privado jvm.

Estos son los mensajes de error que recibo.

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 

Finalmente, no sé mucho sobre el java. Así que estoy atrapado aquí sin saber qué hacer.

+0

¿Pudo resolver los problemas con 'java_require()'? – Kit

Respuesta

3

Aquí hay un gran paso a paso tutorial que puede seguir, ¡que muestra todo lo requerido! Es un poco viejo (2007) pero me ayudó hace un tiempo.

También hay otra opción. Puede instalar Apache Tomcat y desplegar su guerra allí. Puede tener incluso varias instancias de tomcat simultáneamente con su httpd ejecutándose al mismo tiempo en la misma máquina, siempre que respete la configuración del puerto. Incluso puedes enfrentarlos con Apache httpd.

+0

Gracias por ese maravilloso tutorial ... pero aún tengo algunas dudas ... como que estoy tratando de configurar esto en un servidor en vivo basado en Linux .... y el tutorial aquí es para Windows XP .... también puede esto se seguirá también para un servidor de Linux ... –

+0

@Scrappy Cocco: ¡Genial que te haya gustado! Descubrirá que, afortunadamente, las cosas son idénticas entre Windows y Linux. Tienes que sustituir ".dll" por ".so", el carácter de separación de ruta "\" por "/", y los directorios están ubicados en lugares diferentes, pero son fáciles de seguir. Después de que todas las ventanas hayan copiado muchas de las convenciones utilizadas en Unix. –

+0

@CostisAivalis - ¿Conoce un error para el error 'require_java()' anotado arriba? – Kit

0

Puedes probar esto; ponga JavaBridge.jar en la carpeta lib de tomcat, p. apache-tomcat-7.0.12/lib.

servidor Tomcat en Reiniciar y luego,

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

De esta manera he creado la versión de php del objeto.

0

¿Por qué no ponen la clase e24PaymentPipe en la ruta de clase de la aplicación Java y evita las dos líneas más abajo:

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

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

Usted está mezclando operaciones laterales PHP y Java secundarios. en teoría, el java_require (que está en desuso) fue diseñado para funcionar en el lado de Java. Está especificando una ruta lateral de PHP.

2

puede probar esto:

  1. paquete de su código para sacudir, y copiarlo en java.ext.dirs que se puede encontrar en JavaBridge.log
  2. copiar las bibliotecas de clases relacionadas a java.ext .dirs
  3. reinicie el servicio de JavaBridge

buena suerte!

<?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

Usted puede ahorrar muchos dolores de cabeza mediante el uso de un pure PHP implementation de la biblioteca e24PaymentPipe.

Negación

El enlace es a mi github cesión temporal de la biblioteca, pero no me lo escribió. Consulte el archivo Léame para ver los créditos originales.

2

Puede usar este php implementation on github que funciona con php 5.3.

Consulte los créditos en el archivo Léame para obtener más información.