Работа с Php-Java Bridge
У меня проблемы с настройкой 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");
?>
Содержимое моего сайта находится в папке 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 ответов
Вот отличный пошаговый учебник, который вы можете выполнить, который показывает все необходимое! Это немного старый (2007), но помог мне некоторое время назад.
Есть и другой вариант. Вы можете установить Apache Tomcat и развернуть там свою войну. Вы можете иметь даже несколько экземпляров tomcat одновременно с вашим httpd, работающим в одно и то же время на одном компьютере, если вы соблюдаете настройки порта. Вы даже можете столкнуть их с Apache httpd.
Вы можете попробовать это:
- упакуйте ваш код в jar и скопируйте его в java.ext.dirs, который вы можете найти в JavaBridge.log
- скопируйте связанные библиотеки классов в java.ext.dirs
- перезапустите сервис 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 для получения дополнительной информации.
Вы можете избавить себя от многих неприятностей, используя чистую реализацию PHP библиотеки e24PaymentPipe.
отказ
Ссылка на мой репозиторий github библиотеки, но я не написал его. Смотрите 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 в classpath вашего Java-приложения и пропустить две строки ниже:
// $path_e24class = getcwd(). '/e24PaymentPipe.class';
// java_require($path_e24class);
$pipe = new java("fully.qualified.classpath.e24PaymentPipe");
Вы смешиваете стороны PHP и стороны Java. в теории java_require (который устарел) был разработан для работы на стороне Java. Вы указываете путь к стороне PHP.