web-dev-qa-db-ja.com

JavaからのクラスファイルPHP Webサイト上のスクリプト

Webサイトがあり、ユーザーがWebサイトからサーバー上でJavaファイルを実行できるようにしたい。

サーバー上でJavaファイルを実行するボタン、およびJavaプログラムによって標準出力に出力されるものはすべて出力されます。ユーザーが見るためのウェブサイトで。

どのようにこれを行うことができますか(Java PHPからプログラムを呼び出し、Java PHPウェブサイトをリアルタイムで)?

更新:

JavaプログラムをPHPから実行する方法についての回答に感謝します。ただし、Javaプログラムはstdoutに出力されているため、 Javaプログラムが実行中の段階をユーザーが確認できるように、Webページにこれを印刷できるように、実行中に大量のテキストを印刷します。

これをどのように行うことができ、追加のAJAXまたはJavaScriptまたはそのような何かが必要ですか?

45
tree-hacker

PHP exec()]関数を使用する方法ですが、very注意実行を許可するもの..言い換えると、サーバー全体を危険にさらす可能性があるため、ユーザー入力に依存しないでください。

Execを使用してJavaアプリケーションランチャーを呼び出すと、PHPから任意のJavaアプリケーションを実行できます。

<?php exec("Java -jar file.jar arguments", $output); ?>
48
James Goodwin

リアルタイムに言及しているので、PHP to Java Bridge。各リクエストでJVMを初期化すると、多くのリソースが必要になります。

PHP/Java Bridge

PHP/Javaブリッジは、XMLベースのストリーミングネットワークプロトコルの実装であり、PHP、Scheme、PythonなどのネイティブスクリプトエンジンをJavaまたはECMA 335仮想マシン:SOAPを介したローカルRPCよりも最大50倍高速であり、Webサーバー側のリソースが少なくて済みます。Java Nativeインターフェース、およびJavaからのプロシージャPHPまたはPHP Javaからのプロシージャ。

16
Peter Lindqvist

JavaクラスをJavaアプレットにラップします。これは、クライアント側のjavascript呼び出しから呼び出すことができます。参照: http ://www.rgagnon.com/javadetails/Java-0170.html

それ以外の場合、呼び出しが標準出力に大量のテキストをスローするか、システムの依存関係のためにサーバーでクラスを実行する必要がある場合、php execから呼び出す方法がありますが、おそらく cometd クライアントにテキストをリアルタイムで表示します。 DojoやjQueryなどのさまざまなjavascriptツールキットの実装があります。

サーバー側では、php here にcometd実装があるようです。

これが役立つことを願っています...

フィリップ

5
Philippe

exec およびその他の プログラム実行関数 を確認してください。しかし、これを非常に慎重に行うか、エクスプロイトのレシピです。

4
Bobby Jack

パススルー機能は使用できますか?

http://www.php.net/manual/en/function.passthru.php

2
brianjd