Работа с мостом Php-Java.

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

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

  • Мой сайт на чистом php
  • Для нашего процесса платежной транзакции нам нужно настроить мост php-java.
  • Я перешел по этой ссылке, чтобы настроить мост УСТАНОВКА МОСТА PHP-JAVA.
  • Здесь я узнал, что мне нужно иметь приватную jvm для установки моста.
  • Итак, сначала я установил apache-tomcat-6.0.14 в приватной 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. Так что застрял здесь, не зная, что делать.


person Scrappy Cocco    schedule 22.03.2011    source источник
comment
Удалось решить проблемы с java_require()?   -  person Kit    schedule 21.02.2012


Ответы (6)


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

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

person Costis Aivalis    schedule 22.03.2011
comment
Спасибо за этот замечательный учебник .... но все же у меня есть некоторые сомнения ... например, я пытаюсь настроить это на живом сервере, основанном на Linux .... и здесь учебник для Windows XP .... так может это следовать также для Linux-сервера... - person Scrappy Cocco; 24.03.2011
comment
@Scrappy Cocco: здорово, что тебе понравилось! Вы обнаружите, что, к счастью, все на удивление одинаково в Windows и Linux. Вы должны заменить .dll на .so, символ разделения пути \ на /, а каталоги расположены в разных местах, но за ними легко следить. После того, как все окна скопировали множество соглашений, используемых в Unix. - person Costis Aivalis; 24.03.2011
comment
@CostisAivalis - Знаете ли вы обходной путь для ошибки require_java(), указанной выше? - person Kit; 21.02.2012
comment
@Kit: Шаг 10 дает вам вывод Hello World? - person Costis Aivalis; 21.02.2012
comment
@CostisAivalis: Нет. Я получаю сообщение об ошибке Warning: java_require() not supported anymore. Please use - person Kit; 21.02.2012
comment
2. Сохраните его как phpinfo.php в C:\Program Files\Apache Group\Apache2\htdocs\test. 3. Откройте localhost/test/phpinfo.php в веб-браузере. У вас включена поддержка Java? - person Costis Aivalis; 21.02.2012
comment
Нет, не знаю. В файле phpinfo есть только несколько переменных среды Java. Однако $s = new Java("java.lang.String", "hello"); работает нормально. - person Kit; 21.02.2012
comment
Есть ли шанс, что мы могли бы продолжить это в чате? chat.stackoverflow.com/rooms/8022/ - person Kit; 21.02.2012
comment
Возможно, у вас не установлен JDK, а только механизм выполнения Java. Попробуйте команды javac -version и java -version и убедитесь, что выходные данные соответствуют значениям вашей переменной среды. - person Costis Aivalis; 21.02.2012
comment
Поскольку процесс установки выглядит очень устаревшим, вы также можете обратиться к docs.solvable.io/solve- japha/install_server для обновленного руководства - person Sébastien Vanvelthem; 08.03.2017

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

  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";}
?>
person dfy7    schedule 18.04.2012

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

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

person Kieran Andrews    schedule 17.05.2012

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

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

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

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

person sumanchalki    schedule 06.05.2011

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

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

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

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

person cquezel    schedule 03.04.2012

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

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

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

person Burhan Khalid    schedule 16.05.2012