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

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

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

  • Мой сайт находится в чистом php
  • Для нашего процесса транзакции платежа нам необходимо настроить php-java bridge
  • Я выполнил эту ссылку для настройки моста PHP-JAVA BRIDGE INSTALATION.
  • Здесь я узнал, что мне нужно иметь частный 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"); ?> на  <?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. Так что здесь застрял, не зная, что делать.

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

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

вы можете попробовать следующее:

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

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

См. Кредиты на git readme для получения дополнительной информации.

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

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

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

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

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

 // $path_e24class = getcwd(). '/e24PaymentPipe.class'; // java_require($path_e24class); $pipe = new java("fully.qualified.classpath.e24PaymentPipe"); 

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

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

отказ

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