Hello, 

I'm relatively new to guice, and I've got a problem that I quite don't 
understand.

I have a webapp based on guice, eclipse link, mysql that runs on a tomcat 
7.  The app uses a com.google.inject.persist.jpa.JpaPersistModule and 
a com.google.inject.persist.PersistFilter

For some requests the webapp creates a set of java.lang.Runnable, passes 
them to a java.util.concurrent.ExecutorService, and returns.  The runnables 
are numerous time-consuming jobs that must be executed in background to 
avoid blocking the request. Also, each job has to access the EntityManager. 
However, the current implementation is quite naive: 

    @Inject private Provider<MyRunnable> myRunnableProvider;
    @Inject private ExecutorService executorService;
    
    MyRunnable runnable = myRunnableProvider.get();
    executorService.submit(runnable);

This code runs fine on my development computer, but I get this exception 
when I run it in a production environment : 

java.lang.IllegalStateException: Work already begun on this thread. Looks 
like you have called UnitOfWork.begin() twice without a balancing call to 
end() in between.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:
150) ~[guava-15.0.jar:na]
    at com.google.inject.persist.jpa.JpaPersistService.begin(
JpaPersistService.java:73) ~[guice-persist-4.0.jar:na]
    at com.jbl.MyRunnable.run(MyRunnable.java:107)

I think that this has something to do with the Scope, but I don't quite 
understand how to correct this.  

Thank you for any insight on this !

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/141ea4f0-3f34-45c9-a8cf-c28779859a2d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to