WorkManager and UnitOfWork.REQUEST

10 views
Skip to first unread message

Michael Würtinger

unread,
Nov 27, 2009, 12:29:53 PM11/27/09
to warp-core
Hi folks,

I'm using Guice 2.0.1 and warp-persist 2.0 (the snapshot is several
weeks old)
in my non-web server application.

My warp-persist configuration is:
install(PersistenceService.usingHibernate().across
(UnitOfWork.REQUEST).buildModule());

The problem is that I get a ClassNotFoundException while creating the
Injector
(see below).

As I'm not really familiar with java servlets I can only guess that
warp-
persist somehow depends on it if using UnitOfWork.REQUEST.

Is there any possibility to use UnitOfWork.REQUEST without servlets?

Thanks,
Michael

Exception in thread "main" java.lang.NoClassDefFoundError:
javax/servlet/Filter
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass
(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at com.wideplay.warp.persist.PersistenceServiceBuilderImpl
$2.publishWorkManager(PersistenceServiceBuilderImpl.java:59)
at
com.wideplay.warp.hibernate.HibernatePersistenceStrategy
$HibernatePersistenceModule.visit(HibernatePersistenceStrategy.java:
108)
at
com.wideplay.warp.persist.PersistenceServiceBuilderImpl.buildModule
(PersistenceServiceBuilderImpl.java:57)
at
ngbs.server.dao.hibernate.HibernateDaoModule.configure
(HibernateDaoModule.java:97)
at com.google.inject.AbstractModule.configure(AbstractModule.java:
59)
at
com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:
223)
at com.google.inject.spi.Elements.getElements(Elements.java:101)
at
com.google.inject.internal.InjectorShell$Builder.build
(InjectorShell.java:127)
at
com.google.inject.internal.InjectorBuilder.build(InjectorBuilder.java:
103)
at com.google.inject.Guice.createInjector(Guice.java:93)
at com.google.inject.Guice.createInjector(Guice.java:70)
at com.google.inject.Guice.createInjector(Guice.java:60)
at ngbs.server.Main.main(Main.java:111)
Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 25 more

Dhanji R. Prasanna

unread,
Nov 27, 2009, 5:45:09 PM11/27/09
to warp...@googlegroups.com
Ohh you just need the servlet-api.jar in your class path. 

Technically you shouldn't have this dependency anymore, so Im puzzled as to why you're getting this error in a non-servlet environment. However, adding the jar is a straightforward way to fix at least this problem.

Dhanji.


--

You received this message because you are subscribed to the Google Groups "warp-core" group.
To post to this group, send email to warp...@googlegroups.com.
To unsubscribe from this group, send email to warp-core+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/warp-core?hl=en.



Michael Würtinger

unread,
Nov 28, 2009, 3:32:55 AM11/28/09
to warp-core
Hi Dhanji,

thanks for your quick response! I added the servlet-api.jar and
therefore got rid of the exception.

But now I have another problem: warp-persist behaves like
UnitOfWork.TRANSACTION.

I have several DAOs which each have several @Transactional methods and
I'm doing roughly the following:


BackupJob job = backupJobDao.load(1000);

List<DataObjectRevision> dataObjectRevisions =
dataObjectRevisionDao.forBackupJobAndFetchDataObjects(job);
logger.info("Got "+dataObjectRevisions.size()+" DataObjectRevisions");

Client targetNode = clientDao.getClientByName("ngbs-dev-vault1");
logger.info("Got client "+targetNode);

And I'm getting the following log output, which indicated that
Hibernate opens a new transaction (and session?) for each
@Transactional method.

10:00:38,656 DEBUG JDBCTransaction: begin
10:00:38,657 DEBUG JDBCTransaction: current autocommit status: false
10:00:38,766 DEBUG JDBCTransaction: commit
10:00:38,778 DEBUG JDBCTransaction: committed JDBC Connection
10:00:38,783 DEBUG JDBCTransaction: begin
10:00:38,783 DEBUG JDBCTransaction: current autocommit status: false
10:00:39,604 DEBUG JDBCTransaction: commit
10:00:39,660 DEBUG JDBCTransaction: committed JDBC Connection
10:00:39,662 INFO NgbsServerDaemonImpl$2: Got 154 DataObjectRevisions
10:00:39,665 DEBUG JDBCTransaction: begin
10:00:39,666 DEBUG JDBCTransaction: current autocommit status: false
10:00:39,674 DEBUG JDBCTransaction: commit
10:00:39,676 DEBUG JDBCTransaction: committed JDBC Connection
10:00:39,676 INFO NgbsServerDaemonImpl$2: Got client PhysicalNode
(id=114, name=ngbs-dev-vault1, address=172.22.195.45, metaNode=null)
10:00:39,677 INFO JobControllerFactoryImpl: Trying to save job
10:00:39,678 DEBUG JDBCTransaction: begin
10:00:39,678 DEBUG JDBCTransaction: current autocommit status: false
10:00:39,688 DEBUG JDBCTransaction: commit

As I'm new to Guice and warp-persist maybe I'm missing anything...?

It would be great if you could give me some hint about what I'm doing
wrong here.

Thanks,
Michael

Dhanji R. Prasanna

unread,
Nov 28, 2009, 4:20:50 AM11/28/09
to warp...@googlegroups.com
You have to set the session context propert to managed in hibernate. Are you sure you've got that correct?
Here is some more detail about it:

(scroll to the end of the page). If this doesn't fix it, please post your (jpa) config here and we can have a look.

Dhanji.

Michael Würtinger

unread,
Dec 2, 2009, 4:07:59 PM12/2/09
to warp-core
Thanks a lot!

I changed hibernate.current_session_context_class from "thread" to
"managed" and now everything works fine.

~Michael
Reply all
Reply to author
Forward
0 new messages