5

サーバーがpythonで開発されたクライアントサーバーソフトウェアを開発しています。PythonでJavaプログラムからメソッドのグループを呼び出したいです。すべての Java メソッドが 1 つの jar ファイルに存在します。これは、異なる jar をロードする必要がないことを意味します。

この目的のために、私はjpypeを使用しました。クライアントからのリクエストごとに、次のような python 関数を呼び出します。

def test(self, userName, password):
    Classpath = "/home/DataSource/DMP.jar"
    jpype.startJVM(
        "/usr/local/java/jdk1.7.0_60/jre/lib/amd64/server/libjvm.so",
        "-ea",
        "-  Xmx512m",
        "-Djava.class.path=%s" % Classpath)

    NCh = jpype.JClass("Common.NChainInterface")
    n = NCh(self._DB_ipAddress, self._DB_Port, self._XML_SCHEMA_PATH, self._DSTDir)
    jpype.shutdownJVM()

1 つの関数では機能しますが、2 番目の呼び出しでは jvm を開始できません。私はそれについて多くの不満を見ましたが、それに対する解決策を見つけることができませんでした. どなたかお体のお役に立てれば幸いです。

複数のjvm起動でjpypeに問題がある場合、一度jvmを起動・停止する方法はありますか? サーバーは Ubuntu 仮想マシンにデプロイされていますが、この目的のためのスクリプトなどを作成するための十分な知識がありません。リンクまたは例を教えてください。

4

3 に答える 3

8

isJVMStarted()の前に確認してくださいstartJVM()
JVM が実行中の場合は を返しTrue、それ以外の場合は を返しますFalse

def init_jvm(jvmpath=None):
    if jpype.isJVMStarted():
        return
    jpype.startJVM(jpype.getDefaultJVMPath())

実際の例については、こちらを参照してください。

于 2014-08-26T15:14:22.760 に答える