Hi,
I am working on an Web application based on GIN + GWT + Guice + JPA
architecture, and I have difficulties with Guice persistence.
My web application is a simple todo manager in the aim to learn how it's
work. The JPA provider is EclipseLink and the database is MySQL.
I have this error when I access to the web application in my browser :
[EL Info]: 2012-09-30 10:46:07.86--ServerSession(1089829748)--EclipseLink,
version: Eclipse Persistence Services - 2.4.0.v20120608-r11652
[EL Severe]: ejb: 2012-09-30
10:46:07.881--ServerSession(1089829748)--java.lang.ExceptionInInitializerError
sept. 30, 2012 12:46:07 PM com.google.apphosting.utils.jetty.JettyLogger
warn
Avertissement: /todoManager/list
javax.persistence.PersistenceException:
java.lang.ExceptionInInitializerError
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:602)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
at
com.google.inject.persist.jpa.JpaPersistService.begin(JpaPersistService.java:70)
at
com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:87)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
at
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:110)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at
com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:380)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at
org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:124)
at
org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:253)
at
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:685)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:213)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)
... 42 more
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "modifyThreadGroup")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at
com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:289)
at
com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:314)
at java.lang.ThreadGroup.checkAccess(Unknown Source)
at java.lang.Thread.init(Unknown Source)
at java.lang.Thread.<init>(Unknown Source)
at
com.mysql.jdbc.NonRegisteringDriver$1.<init>(NonRegisteringDriver.java:90)
at
com.mysql.jdbc.NonRegisteringDriver.<clinit>(NonRegisteringDriver.java:89)
... 51 more
My GuiceServletContextListener class :
public class TodoManagerServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new TodoManagerModule());
}
}
My Servlet Module :
public class TodoManagerModule extends ServletModule {
protected void configureServlets() {
install(new JpaPersistModule("TodoManager"));
filter("/*").through(PersistFilter.class);
bind(TodoDao.class);
serve("/todomanager/list").with(TodoListServlet.class);
}
}
My Todo DAO :
public class TodoDao {
protected EntityManager entityManager;
@Inject
public TodoDao(EntityManager entityManager) {
this.entityManager = entityManager;
}
public List<TodoEntity> listTodoTask(){
Query q = entityManager.createQuery("FROM Todo");
return q.getResultList();
}
}
Todo Entity :
@Entity
public class TodoEntity {
@Id
@GeneratedValue
private Long id;
private int priority;
private String task;
private boolean done;
public TodoEntity() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public boolean isDone() {
return done;
}
public void setDone(boolean done) {
this.done = done;
}
}
Todolist Servlet :
public class TodoListServlet extends RemoteServiceServlet implements
TodoService.Iface {
/**
*
*/
private static final long serialVersionUID = -8357056516360668935L;
@Inject
private Provider<EntityManager> entityManager;
@Override
public List<Todo> getTodoValues()
throws IllegalArgumentException {
List<Todo> todoList = new ArrayList<Todo>();
TodoDao dao = new TodoDao(entityManager.get());
Iterator<TodoEntity> it = dao.listTodoTask().iterator();
TodoEntity todoEntity;
while(it.hasNext()){
todoEntity = it.next();
todoList.add(new
Todo(todoEntity.getPriority(),todoEntity.getTask(),todoEntity.isDone()));
}
return todoList;
}
}
And the SQL table :
CREATE TABLE `todo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`priority` int(10) unsigned NOT NULL,
`task` varchar(45) NOT NULL,
`done` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
I have any idea to revolve my problem.
Thanks in advance
Nicolas
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-guice/-/W4IRhPTPtXYJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.