2011-01-18 13 views
2

Java EE6アプリケーション内から長時間実行する接続をTwitter streaming APIに作成し、障害発生時に接続を監視して再確立する必要があります。Java EEアプリケーションからTwitterストリーミングAPIへの長時間接続を管理する

次のようにJersey JAX-RSとOAuthでテストを実行しました。これは、私が望むようにストリーミングデータを処理します。

WebResource resource = client.resource(STATUS_URI); 
resource.addFilter(oauthFilter); 
ClientResponse clientResponse = resource.get(ClientResponse.class); 
InputStream is = clientResponse.getEntityInputStream(); 
BufferedReader r = new BufferedReader(new InputStreamReader(is, "UTF8")); 
boolean more = true; 
while (more) { 
    String jsonTweet = r.readLine(); 
    //send tweet to JMS queue 
    ..... 
} 

シングルトン '@PostConstruct'メソッドで上記のコードを実行しようとしましたが、ブロックされてアプリケーションが正しく読み込まれません。

私の質問は、アプリケーションの起動時にJava EE環境内から接続を初期化し、新しいスレッドを直接作成せずにエラーを監視して再接続する推奨方法は何ですか?

答えて

0

は、あなたがシングルトンのMBean(JBoss固有の実装)を作成するために@Serviceを使用することができますが、それでも私は@Startupを好むアプリケーションの起動

  • 上のJava EE 環境内から の接続を初期化する方法をお勧めします& アプリケーションのデプロイメント時にサーバーとの移植性を確保するための作業が必要です。

モニター+ が直接新しいスレッドを作成せずにエラーに再接続?

  • ThreadPoolExecutor:プールされた複数のスレッドのいずれかを使用して、各送信タスクを実行するExecutorServiceのは、通常、エグゼキュータのファクトリメソッドを使用して構成します。例外で

、タスクがサービスをエグゼキュータに再送信することができ、タスクは、接続を再接続、監視を含んでもよいなど

+0

私はそれがEJB内からエグゼキュータを使用するように仕様反対だと思いましたか? – Phill

+0

はい、干渉することがありますが、使用するとうまく処理する必要があります。また、同じ目的でJMSを使用することもできます。 –

関連する問題