Twitter4j ストリーミング機能を使用しようとしています。したがって、私の実装は次のクラスにあります。
public class TweetsStream {
private TwitterStream m_twitterstream;
private StatusListener m_statusListener;
public void printStream(...)
// Stream
m_twitterstream = null;
m_twitterstream = TwitterStreamFactory.getSingleton();
// Listener
m_statusListener = new StatusListenerRedefined(...);
m_twitterstream.addListener(m_statusListener);
// Filter
FilterQuery l_filter = new FilterQuery();
l_filter.track(... );
// Launch
m_twitterstream.filter(l_filter);
}
public void stopStream(){
m_twitterstream.shutdown();
m_logger.info("shutdown done");
m_twitterstream = null;
m_statusListener = null;
}
}
私の新しい StatusListener() は、コンソールにステータスを出力します。
次にTweetsStream
、別のサーブレット クラスでオブジェクトを作成します。
@WebServlet("/Controler")
public class Controler extends HttpServlet {
private static final long serialVersionUID = 1L;
// Logger
protected final static Logger m_logger = Logger.getLogger("Controler");
//Stream
private TweetsStream m_tweetStream;
//Function...
m_tweetStream = new TweetsStream(...);
m_tweetStream.printStream(...);
}
ストリームは完全に機能します。だから私は今それを止めようとしています。同じクラスで私は関数を持っています:
private void stopStream(){
m_tweetStream.stopStream();
m_tweetStream = null;
}
ストリームはコンソールで停止します。すべて問題ありません。
しかし、同じクラスで私の機能を思い出すと:
//Function...
m_tweetStream = new TweetsStream(...);
m_tweetStream.printStream(...);
リスナーを 1 つ追加して、以前の m_twitterstream を再開しただけのようです。だから私は各ツイートの2つの印刷物を持っています...
Stream を完全に殺す方法は? そして、再起動すると、最後の StatusListener しかありませんか?
ありがとう !