6

Php-Java Bridgeセットアップを正しくセットアップできません。

私がしたことを説明します。

  • 私のサイトは純粋なphpです
  • 支払いトランザクションプロセスでは、php-javaブリッジを設定する必要があります
  • このリンクをたどって、ブリッジPHP-JAVABRIDGEINSTALATIONをセットアップしました。
  • ここで、ブリッジをインストールするにはプライベートjvmが必要であることを学びました。
  • そのため、最初に、c-panelを使用してプライベートJVMにapache-tomcat-6.0.14をインストールしました。インストール後、ドメインをプライベートJVMにマップするように求められました。そこで、ドメインexample.com(利用可能な唯一のオプション)をそれにマッピングしました。
  • 次に、Apache WebサーバーからJavaアプリケーションサーバーへのトラフィックリダイレクトを有効にするように求められました(チェックボックスがあり、クリックしました)
  • 最後に、WARファイル(JavaBridge.WARが私のファイルでした)をデプロイするように求められましたが、すべて問題ないようです
  • これで、http: //example.com/JavaBridge/にアクセスすると、javabridgeの例が表示され、正常に機能します。

ここまでは順調ですね

phpからjavaクラスファイルにアクセスしようとすると、ここから問題が始まります。サンプル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についてあまり知りません。だから、何をすべきかわからないままここで立ち往生しています。

4

6 に答える 6

3

これは、あなたが従うことができる素晴らしいステップバイステップのチュートリアルで、必要なものすべてを示しています! 少し古い(2007年)ですが、少し前に助けてくれました。

別のオプションもあります。Apache Tomcat をインストールして、そこに war をデプロイできます。ポート設定を尊重する限り、同じマシンで同時に実行されている httpd を使用して、複数の tomcat インスタンスを同時に持つこともできます。Apache httpd を前面に出すこともできます。

于 2011-03-22T10:19:48.090 に答える
2

あなたはこれを試すことができます:

  1. コードを jar にパッケージ化し、それを JavaBridge.log にある java.ext.dirs にコピーします。
  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";}
?>
于 2012-04-18T09:03:49.187 に答える
2

このphp 実装は、php 5.3 で動作するgithubで使用できます。

詳細については、git readme のクレジットを参照してください。

于 2012-05-17T10:56:54.550 に答える
0

これを試すことができます。JavaBridge.jar を tomcat の lib フォルダー (例: apache-tomcat-7.0.12/lib) に入れます。

Tomcat サーバーを再起動してから、

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

このようにして、オブジェクトの php バージョンを作成しました。

于 2011-05-06T08:13:40.860 に答える
0

Java アプリケーションのクラスパスに e24PaymentPipe クラスを配置して、以下の 2 行をスキップしてください。

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

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

PHP 側と Java 側の操作を混在させています。理論的には、java_require (非推奨) は Java 側で動作するように設計されています。PHP サイド パスを指定しています。

于 2012-04-03T10:03:45.510 に答える
0

e24PaymentPipe ライブラリーの純粋な PHP 実装を使用することで、多くの手間を省くことができます。

免責事項

リンクはライブラリの github リポジトリへのリンクですが、私は書いていません。元のクレジットについては、の readme を参照してください。

于 2012-05-16T12:23:56.933 に答える