2017-08-31 7 views
1

に外部プロセスを実行する方法を私は他のBeanにこのプロセスをするJava EE 5アプリケーションからの長時間実行外部プロセスを開始し、抽象なければなりません。プロセスの存続期間は、Java EEアプリケーションの存続期間に関連している必要があります。は、Java EE 5、シングルトンビーン

単純に、BeanはRuntime APIを使用して初期化中にプロセスを開始し、IOチャネルで内部的に書き込みおよび読み取りを行うプロセスと対話するためのインターフェイスを提供します。プロセスは常に開いています。

コンテナがインスタンスを1つだけインスタンス化し、常にこの特定のインスタンスを注入するようにする必要があります。アプリケーションが実行されている間は、インスタンスが存在する必要があります。インスタンスはデプロイ中に初期化され、デプロイメント解除またはサーバーのシャットダウン中に破棄される必要があります。したがって、ライフサイクルフックは、これらのフェーズでプロセスを開いたり閉じたりできるようにする必要があります。

このBeanがあれば、アプリケーションで利用可能だとの要件を満たしているとして、EARにバンドル、または個別のライブラリモジュールとして展開されている場合、それは問題ではありません。

@Singleton@ApplicationScopedのような注釈については知っていますが、これはJava EE 6の注釈です。 Java EE 5ではこれがどのように可能ですか?

+0

プロセスがある場合は、「物理的」に依存しない方法(例:Windowsサービス)で始まっ何....私は考えてみようと「論理的に」このBeanを介して制御しますか? JVMの安定性が –

+0

プロセスと寿命を制御している必要がありますアプリケーションは、アプリケーション –

+0

に接続する必要があり、JNIは、ここではオプションではありません、私は終わっ聞いて良い –

答えて

1

私はあなたの最善の策は、ServletContextListenerに結びつけることであると思うだろう。

コードは次のようなものになるだろう:

package tld.yourcompany.your.java.package; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 

public class ProcessManagerContextListener implements ServletContextListener{ 

    @Override 
    public void contextDestroyed(ServletContextEvent event) { 
     // shut down the process 
    } 

    @Override 
    public void contextInitialized(ServletContextEvent event) { 
     // start up your process 
    } 
} 

そして、あなたは先史時代の環境にいるので、あなたが持っているのweb.xmlを変更する必要があります:

<web-app ...> 
    <listener> 
    <listener-class> 
      tld.yourcompany.your.java.package.ProcessManagerContextListener 
     </listener-class> 
    </listener> 
</web-app> 

ServletContextListenerはEE 1.3に含まれていますので、使用するには問題ありません。

+0

あまりにも揮発性同じ結論で –

1

@Singletonを含まないシングルトンをシミュレートするには、ちょうどという1つのステートフルBeanが必要です。 With Weblogic

<weblogic-enterprise-bean> 
    <ejb-name>YourEJB</ejb-name> 
    <entity-descriptor> 
     <entity-cache> 
      <max-beans-in-cache>1</max-beans-in-cache> 
     </entity-cache> 
    </entity-descriptor> 
</weblogic-enterprise-bean> 
+0

を保証しなければならない。これは動作しますが、見えるかもしれませとして –