How to access Hibernate session from src folder?

Posted by firnnauriel on Stack Overflow See other posts from Stack Overflow or by firnnauriel
Published on 2011-01-17T13:35:40Z Indexed on 2011/01/17 13:53 UTC
Read the original article Hit count: 261

Filed under:
|
|

I would like to know how to access the Service and Domains properly in this sample class placed in src/java folder

public class NewsIngestion implements Runnable {

private String str;
private int num;
private Logger log = Logger.getLogger("grails.app");
private static boolean isRunning;
private Thread t;
private WorkerJobService jobService;
private NewsService newsService;

public NewsIngestion(String s, int n)
{
    jobService = new WorkerJobService();
    newsService = new NewsService();

    str = s;
    num = n;
    isRunning = false;

    t = new Thread (this, "NewsIngestion");

}

public void run ()
{

    while(isRunning){
        try{
            if(jobService.isJobEnabled("ConsumeFeedsJob") && jobService.lockJob("ConsumeFeedsJob")){
                log.info("${this.class.name}: ConsumeFeedsJob started");

                try{
                    // get all sources
                    List sources = (List) InvokerHelper.invokeMethod(RSSFeed.class, "list", null);

                    for(int i = 0; i < sources.size(); i++) {

                        RSSFeed s = (RSSFeed) sources.get(i);

                        // check if it's time to read the source
                        int diff = DateTimeUtil.getSecondsDateDiff(s.getLastChecked(), new Date());

                        if(s.getLastChecked() == null || diff >= s.getCheckInterval()){

                            List keyword_list = (List) InvokerHelper.invokeMethod(Keyword.class, "list", null);

                            for(int j = 0; j < keyword_list.size(); j++) {

                                String keyword = (String) keyword_list.get(j);

                                try{
                                    newsService.ingestNewsFromSources(keyword, s);
                                }catch(Exception e){
                                    log.error("${this.class.name}: ${e}");
                                }

                                log.debug("Completed reading feeds for ${keyword}.");
                                log.info("${this.class.name}: Reading feeds for '${keyword}' (${s.feedName}) took ${Float.toString(st2.getDuration())} second(s).");
                            }

                            s.setLastChecked(new Date());
                            InvokerHelper.invokeMethod(RSSFeed.class, "save", null);
                        }

                        log.info("${this.class.name}: Reading feeds for '${s.feedName}' for all keywords took ${Float.toString(st.getDuration())} second(s).");
                    }

                }catch(Exception e){
                    log.error("${this.class.name}: Exception: ${e}");
                }

                log.info("${this.class.name}: ConsumeFeedsJob ended.");

                // unlock job
                jobService.unlockJob("ConsumeFeedsJob");
            }

            log.info("alfred: success");

        }
        catch (Exception e){
            log.info("alfred exception: " + e.getMessage());
        }

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            log.info(e.getMessage());
        }
    }
}

public void start() {
    if(t == null){
        t = new Thread (this, "NewsIngestion");
    }

    if(!isRunning){
        isRunning = true;
        t.start();
    }
}

public void stop() {
    isRunning = false;
}

public boolean isRunning() {
    return isRunning;
}

}

I'm encountering this error message:

No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

Thanks.

© Stack Overflow or respective owner

Related posts about java

Related posts about hibernate