2017-10-05 4 views
2

TomEE + 7.0.2にJava EE 7 REST APIをホストする48個のCPUを持つサーバーがあります。TomEEのマネージエグゼキュータサービス

一部のAPIでは、並列化されたアルゴリズムを実行するときに、できるだけ多くのCPUを使用する必要があります。 並列化された部分は、データベースや他のリソースを必要とせず、共用double [] []マトリックス内で幾分か重く持ち上げるだけです。

私は通常、EJBコンテキストで作業していますが、この特定のインスタンスでは、要件ではありません(また、そうでないことも望ましい)。

これまでのところ私は、executorをインスタンス化するために、

ExecutorService pool = Executors.newFixedThreadPool(maxThreads); 

を使用していたが、これは、オペレーティング・システム・レベルでの実際のスレッドを生成するようだと私はそれの大ファンではない - いくつかのJMeter負荷がそれをテストした後bash全体がブロックされ、ハードリブートするまでサーバをSSHできなくなってしまった。

"マネージドエグゼキュータサービス"の概念に遭遇しましたが、私はチュートリアル/その使用方法をオンラインで確認することができません。

誰かが次のような考えを共有できますか?

a)TomEEでスレッドプールを設定する方法(例:server.xml、context.xml、tomee.xmlなど)、コード例はわかりますか?

b)デフォルトのスレッドプールを利用する方法はありますか?チューニングを必要としないほど賢明ですか?いいえ、どこからチューニングを開始できますか?

c)Javaでスレッドプールを検索するにはどうすればよいですか?JDNIルックアップで優先されますか?

d)私が一度そのリソースをEJBの一部にすることに決めた場合、インジェクションのコードはどのように見えますか?

私のアプリケーションコンテキストはserver.xmlの "myContext"として指定されていますので、サンプルを提供すると、検索文字列がどのように正確に見えるかを指定できますか?

Tomone + 7.0.2のインストールは非常に単純ですが、これまでの設定には触れませんでした。

ありがとうございました!ここで

ダニエル

答えて

0

が始めるのに良いチュートリアルです:あなたは@ManagedExecutorServiceを注入した場合https://martinsdeveloperworld.wordpress.com/2014/02/25/using-java-ees-managedexecutorservice-to-asynchronously-execute-transactions/

、TomEEはあなたにデフォルトのサービスとプールを与える必要があります。 (私はこれをテストしていない)

@Resource 
private ManagedExecutorService mes; 

あなたはこのようTomEE.xmlでそれを設定することができるはずです::

<Resource id="myManagedExecutorService" type="javax.enterprise.concurrent.ManagedExecutorService"> 
    Core = 5 
    Max = 25 
    KeepAlive = 5 s 
    Queue = 15 
    WaitAtShutdown = 30 seconds 
</Resource> 

そして、あなたのコード内で表示されない場合は、それはおそらくバグです:

@Resource("myManagedExecutorService") 
private ManagedExecutorService mes; 

私はこれをservice-jar.xmlを見て判断しました。あなたも、あなたがドキュメントを見つけることができます私の意見

0

でManagedExecutorServiceよりも少し良く選択肢であるJMSと@Asyncronousにしたいことがあり、ここでhttp://tomee.apache.org/admin/configuration/resources.html#_managedexecutorservice

これらのエグゼキュータの主な利点は以下のとおりです。

  1. それコンテナにコンフィグレーションされていますが、カスタムアプリケーションコンフィグレーションは必要ありませんが、アプリケーションの再コンパイルや変更なしで調整可能です。
  2. @Asynchronousのように特定のプールを定義していないため、移植性はあまり高くありませんEASは、これらの管理対象のプールはかなり均一である
  3. これらのプールされている「企業」優しいあなたは、いくつかのコンテキストを伝播(セキュリティとJNDI /通常クラスローダー)

でのセキュリティと監査を追加

  • これらのプールするリスナーを持っているので、私たちの同居者

  • 関連する問題