Работа с Php-Java Bridge - PullRequest
       39

Работа с Php-Java Bridge

5 голосов
/ 22 марта 2011

У меня проблемы с настройкой Php-Java Bridge.

Я объясню, что я сделал.

  • Мой сайт на чистом php
  • Для нашего процесса платежной транзакции нам нужно настроить php-java bridge
  • Я перешел по этой ссылке, чтобы настроить мост УСТАНОВКА МОСТА PHP-JAVA.
  • Здесь я узнал, что мне нужен частный jvm для установки моста.
  • Итак, сначала я установил apache-tomcat-6.0.14 в Private JVM, используя мою c-панель. После установки он попросил меня сопоставить домен с частной JVM. Поэтому я сопоставил свой домен example.com (который является единственным доступным вариантом) с ним.
  • Затем он попросил включить перенаправление трафика с веб-сервера Apache на мой сервер приложений Java (был установлен флажок, и я щелкнул по нему)
  • В конце концов он попросил меня развернуть файл WAR (JavaBridge.WAR был моим файлом), и все, кажется, нормально
  • Теперь, когда я перехожу к http://example.com/JavaBridge/, я мог видеть примеры javabridge, и он отлично работает.

ТАК ЧТО ТАК ХОРОШО

Теперь моя проблема начинается здесь, когда я пытаюсь получить доступ к файлу класса Java из php. Образец test.php - это то, что я создаю и вставляю в него следующий код.

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

Содержимое моего сайта находится в папке public_html, а файл WAR развернут в приватной jvm.

Это сообщение об ошибке, которое я получаю.

  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:  1.6.0_22@http://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

Наконец-то я мало что знаю о Java. Так что я застрял здесь, не зная, что делать.

Ответы [ 6 ]

3 голосов
/ 22 марта 2011

Вот отличный шаг за шагом учебник , который вы можете выполнить, который показывает все необходимое! Это немного старый (2007), но помог мне некоторое время назад.

Есть и другой вариант. Вы можете установить Apache Tomcat и развернуть там свою войну. Вы можете иметь даже несколько экземпляров tomcat одновременно с вашим httpd, работающим в одно и то же время на одном компьютере, если вы соблюдаете настройки порта. Вы даже можете столкнуть их с Apache httpd.

2 голосов
/ 17 мая 2012

Вы можете использовать эту реализацию php на github , которая работает с php 5.3.

Для получения дополнительной информации см. Титры в git readme.

2 голосов
/ 18 апреля 2012

Вы можете попробовать это:

  1. упакуйте ваш код в jar и скопируйте его в java.ext.dirs, который вы можете найти в JavaBridge.log
  2. скопировать связанные библиотеки классов в java.ext.dirs
  3. перезапустите сервис JavaBridge

удачи!

<?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 голосов
/ 16 мая 2012

Вы можете сэкономить много горя, используя чистую реализацию PHP библиотеки e24PaymentPipe.

Отказ от ответственности

Ссылка на мой репозиторий на github библиотеки, но я не написал его.См. Readme для оригинальных кредитов.

0 голосов
/ 03 апреля 2012

Почему бы вам не поместить класс e24PaymentPipe в classpath вашего Java-приложения и пропустить две строки ниже:

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

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

Вы смешиваете операции на стороне PHP и на стороне Java. в теории java_require (который устарел) был разработан для работы на стороне Java. Вы указываете путь к стороне PHP.

0 голосов
/ 06 мая 2011

Вы можете попробовать это;поместите JavaBridge.jar в папку lib Tomcat, например, apache-tomcat-7.0.12 / lib.

Перезапустите сервер Tomcat и затем

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

Таким образом, я создал версию phpобъект.

...