2012-01-17 8 views
6

私はいくつかの特定のハードウェアをサポートするウェブアプリケーションを稼働させています。これは、以下の手順で実現されます。ウェブアプリケーションのハードウェアサポート

  1. ユーザーは、クライアントマシン上のJavaファイル(と夫婦 他人を)置く小さなインストーラを実行します。主な部分は、 "hardwareManager"と呼ばれる瓶です。
  2. ユーザーの訪問webアプリケーション。 WebアプリケーションはJavaアプレットを実行します。これは、インストール時に .java.policyファイルが配置されているため、 がブラウザサンドボックス外のクライアントマシンと対話する権限を持ちます。
  3. アプレットは、hardwareManagerが実行中であることを確認するために、 をチェックし、起動しない場合は起動するようにコマンドを実行します。
  4. ユーザーは、 JavaScript経由でアプレットにコマンドを送信するWebアプリケーションとやりとりします。アプレットは、クライアントマシンのテキストファイル にコマンドを書き込みます。テキストファイルは、読み込まれたコマンドを実行する hardwareManagerによって常に監視されます。

これは機能しますが、はっきりしないようです。私はそれを改善する方法に関するいくつかのアイデアを持っていますが、もしあれば、試してみる価値があるかどうかわかりません。

hardwareManagerをsocketServerとしてセットアップし、テキストファイルを経由するのではなくアプレットを直接接続する方が良いでしょうか?それも可能ですか?

アプレットを完全に削除し、javascriptを直接hardwareManagerに渡す方法はありますか?たぶん、ローカルのhttpサーバーになるためにhardwareManagerを書くことによって?どのポートを実行する必要がありますか? javascriptのxssの制限はどこかでここに収まるのですか?

+3

hardwareManagerがHTTPリクエストを受け入れるようにする場合、彼はJSによって直接アクセスできます。さらに、REST Webサービスとしてコマンドを実装するように設計することもできます。 XSS:ここでは問題ありません。もちろん、コマンドを受け入れるためにhardwareManagerを実行させ、どのポートで知っているかを知る必要があります。 – Viruzzo

+0

@Viruzzuの答えに加えて、[Jetty](http://docs.codehaus.org/display/JETTY/Embedding+Jetty)を使うと、httpサーバをJavaアプリケーションの中に簡単に埋め込むことができます。その後、単にjavascriptコードをlocalhostに渡して、hardwareManager –

+1

Viruzzoとやりとりするために、答えを出して投票してください。 – pkh

答えて

2

Java Web Startを使用してJavaアプリケーションを起動するのはちょっとしたことではありません。これにより、Javaハードウェアマネージャをデーモン化またはインストールする必要がなくなります。

もう1つの方法は、Javaで組み込みのブラウザを使用する方法です。あなたがJavascriptに大きく依存しているので、これはオプションではありません(私は豊富なクライアントエクスペリエンスを提供すると思います)。既にクライアント・マシン上で何かをインストールする必要がある場合は

は、なぜあなたは選択は、Webアプリケーションで行くことにしましたか。

経験によると:クライアントサイトでPoSプリンタに印刷する必要のあるJava EEアプリケーションがありました。私たちは、SSHを介して接続し、すべてのクライアントファイルを同期させる小さな「シンクロナイザ」アプリケーションをインストールしました。その後、JARをロードしてプログラムを実行します。このプログラムは、RMIを介してサーバーと接続し、JMSキューにサブスクライブして印刷割り当てを受け取ります。

あなたのケースに適用されます:あなたのJavaアプリケーションを直接サーバーに接続させてみませんか? HTTP、SOAP、さらにはJMS over RMIを使用することができます。サーバーからハードウェアコマンドを起動できます(限られたJavaScript Webブラウザ環境ではなく)。このようにして、認証、コマンドのバッファリング、そして複数のクライアント間でハードウェアを共有することさえできます。

回路図:

    <----AJAX------> Web browser 
ApplicationServer     
        <---HTTP/SOAP--> Java hardware manager application 

あなたが(代わりに、すべてのクライアントに新しいインストーラを渡すために必要とする)は、自動的にアプリケーションを更新することを可能にするJava Web Startのを、使用してJavaアプリケーションを起動することができます。

+0

'すでにクライアントマシンに何かをインストールしなければならないのであれば、なぜWebアプリケーションを使うのかを選択したのですか?それは主にWebアプリケーションで、一部のユーザに対してオプションのハードウェアサポートが必要です。 –