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.

Reply via email to