I don't quite understand how jobHistoryListener is supposed to be used. It looks like it is initialized every time parse() is called? First, is this class never used in a multi-threaded environment? Is it intended that every time parse() is called, the jobHistoryListener instance keeps getting recreated?