3

私がやろうとしていることは、彼らが何をしているのかを知っている人なら誰にとっても簡単なはずだと思いますが、私がこれまでにプログラムした言語はほとんど例外なくCだけです。Cプログラムと通信するElasticBeanstalkでWebアプリを作成しようとしています。私の現在の計画は、JNIを使​​用して、誰かがフォームに入力してボタンを押したときにメインのjspページで呼び出すことができるネイティブ関数を作成することです。

これまでのところ、C側では、Cプログラムが必要なすべてのことを実行するために必要な7つの入力変数と7つの出力変数を含む関数を作成しました。データベースにアクセスしたり、何か難しいことをしたりする必要はありません。7つの変数を入力し、7つの変数を出力するだけです。

ネイティブメソッドを持つJavaクラスを設定しました。ダミー変数を貼り付けて結果を出力するmain関数を与えました。JNIは、パッケージ名や複雑なものを一切使用せずにすべてを1つのディレクトリにコンパイルすると機能します(パッケージ名で機能させることはできません)。したがって、.soファイルと.classファイルがあります。動作します。

一方、AWSが提供する最初の紹介Webアプリを取り上げました。それを私のマシンにダウンロードし、warファイルをアンパッケージしました(Eclipseはボイラープレートと構造化の束を追加し、antやコンパイルを行うための何かのような新しいツールでそれをさらに複雑にする能力に自信がありません(私はjavacに非常に快適です、javahとjar、ありがとうございました))。index .jspページにフォームを作成しました。入力変数を受け取るJavaScriptは、それらに対して関数を実行し、出力データをフォームに貼り付けます。

私が今やらなければならないことは、.jspからjavaクラスを呼び出すことだけであり、それによってすべてがリンクされるはずです。これを行うためのより良い方法があるかもしれないことを私は理解しています。Webアプリプログラミングの深い原則に違反している場合、またはセキュリティ上の問題がある場合は、お知らせください。(たとえば、先に進んでデータ入力をサニタイズします)。私はそれを行う方法を正確に理解できないようです。これを行うHelloWorldの例は非常に役立ちます。web.xmlファイルに何かを貼り付ける必要がありますか?.classファイルがclassesディレクトリにあることを漠然と知っています。.soファイルはどこに行きますか?

要約:私がしていることを行うためのより簡単な方法はありますか(言語/プログラム/コード行が少ないですか?)(より良い方法があることを知っています)私がしていることは何らかの形で危険ですか?index.jspからJavaクラスを呼び出すにはどうすればよいですか?web.xmlには何かが必要ですか?JNIをコンパイルして、.classファイル以外の場所に.soファイルを見つけるにはどうすればよいですか?.soファイルをクラスファイルに貼り付けることはできますか?

4

1 に答える 1

0

.so ファイルを $CATALINA_HOME/shared/lib フォルダー内のどこにでも配置します。

そこに置きたくない場合は、Java ランタイム環境に渡されるオプションの 1 つとして java.library.path の値を指定することをお勧めします (例: java -Djava.library.path=/path/to/ my.so ... )、これはおそらく tomcat ランチャーをハックする必要があるか、このオプションを JAVA_OPTS 環境変数に追加する必要があることを意味します。

于 2013-08-28T01:06:40.850 に答える