twitter4j を使用してアプリケーションを開発しています。DAO を使用してツイートをファイルに保存します。
StatusListener
クラスの実装を作成しました:
public class StatusListenerStore implements StatusListener {
// DAO
private DAO<Status> m_statusDAO;
// Constructor
public StatusListenerStore(FactoryType a_factoryType,ArrayList<String> a_lanTrackList) {
super();
AbstractDAOFactory l_DAOFactory = AbstractDAOFactory.getFactory(a_factoryType);
m_statusDAO = l_DAOFactory.getTweetDAO();
}
}
呼び出される DAO は次のとおりです。
// Extract of my class
private static HadoopFileSystem m_hadoopFileSystem = null;
public TweetHADOOPDAO(){
m_hadoopFileSystem = new HadoopFileSystem(m_path+m_filename);
}
public void close(){
m_hadoopFileSystem.closeWriters();
}
HadoopFileSystem にOutputStream
は、閉じる必要があるものが含まれています。
まず第一に、すべてのプログラムに対して 1 つの HadoopFileSystem オブジェクト インスタンスのみが必要です。static キーワードは私を保証しますか?
次に、出力ストリームを閉じるには、ストリームが完了したときに DAO クラスで close 関数を呼び出す必要があります。正しいshutdown()
関数を使用して閉じます。
しかし、m_statusDAO
オブジェクトは StatusListener クラスで宣言されています。ストリームが close のときに、このクラスで close() 関数を呼び出すにはどうすればよいですか?