2016-04-01 11 views
0

私は、多数のスレッドを実行する動作中のJava EEアプリケーションを持っています。これらのスレッドをアプリケーションから移動し、データ(文字列とint)にアクセスするだけです。別のサーバー/ JVM上でJavaスレッドを実行する

別のサーバー/ JVM上のスレッドデータにアクセスするWebアプリケーションのメソッドを呼び出すとしたらどうすればよいでしょうか?

+1

スレッドは移動できません。あなたはここでそれらを破壊し、そこに作成することしかできません。 –

+0

スレッドのデータが変化しているので、スレッドのデータにアクセスすることは疑わしい喜びです。データをある種の出力キューに入れるようにプログラムスレッドを改善する。 –

+0

@AlexeiKaigorodovなぜこれらのスレッドにアクセスできるWebサービスを作成できないのですか? –

答えて

0

は、ほとんどすべてのデータは、多くのスレッドによって共有されるヒープ上にあるスレッドデータJavaでは

にアクセスします。そのほとんどが個々のスレッドに完全にスコープされていません。だから、スレッドと "そのデータ"だけを動かすという考えはあまり意味がありません。

これはJavaだけではなく、共有可能な可変状態の言語はほとんど同じ問題に直面します。

もちろん、あなたのアプリケーションはスレッド所有のデータの概念を持つことができますが、それはアプリケーションロジックであり、Java自体またはそのThreadクラスの一部ではありません。

0

これらのレイヤーを別々のマシンに配置したり、スケーラビリティのために配置したりする場合は、データレイヤーをプレゼンテーションレイヤーから分離して別のJVMに配置するとします。データレイヤーをプレゼンテーションレイヤーにサービスを提供させます。どのようにこれを行うかは、あなたの優先輸送に依存します。例えばWebサービスでも、RMI、JMS、TCP、共有メモリを使用することもできます。

いずれの場合でも、1つのJVMは、JVMが公開するサービスを介して別のプロセスのデータにしかアクセスできません。 (共有メモリの場合は例外ですが、データモデルが非常に単純な場合を除き、これを得るのは容易ではありません)

+0

私は今考えていますサードパーティのWebサービスAPIのいくつかの種類。そのため、私のアプリケーション用にまったく新しいWebサービスを作成する必要はありません(サーバースペース、データストレージなどの支払い)。このようなものがありますか?www.timerserviceapi.com/webapi/setatimer/timerid=1?setseconds=230 –

+0

私のエンタープライズアプリケーションでは、リモートからタイマーデータにアクセスするだけです。 –

+0

非常に面白いサービスです実装する。何かがあるかもしれませんが、私はあなた自身でこれを行うでしょう。注:どのようにIDが一意であることを確認しますか?私はUUIDを使用します。 –

関連する問題