I would love to get the GAE sample working from the new 2.5 release but there is something wrong I can't seem to troubleshoot.
Importing the project to Eclipse seemed to go well. I added some datanucleus jars to the path (3.0), copied all of the smartgwtee jars to war/WEB-INF/lib, and added the Appe Engine SDK (1.5.2). Those steps seemed to solve all of Eclipe's complaints about the project.
When I launch the project it appears to compile alright and when I load the client in Firefox it looks like it should, except that the Country table is stuck "Loading data..." and I get this:
Clicking the "Add some data" button yields this complaint:
This same behavior occurs both locally and when I deploy the project to GAE
And here's the Console view that goes with launching the application and opening it in the browser:
Any ideas?
Importing the project to Eclipse seemed to go well. I added some datanucleus jars to the path (3.0), copied all of the smartgwtee jars to war/WEB-INF/lib, and added the Appe Engine SDK (1.5.2). Those steps seemed to solve all of Eclipe's complaints about the project.
When I launch the project it appears to compile alright and when I load the client in Firefox it looks like it should, except that the Country table is stuck "Loading data..." and I get this:
Code:
[ERROR] [GAEDS_js] - 16:14:44.159:XRP6:WARN:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):Bad data returned, ignoring: "<BR>com.isomorphic.servlet.IDACall top-level exception<BR> <PRE> java.lang.NoClassDefFoundError: Could not initialize class com.isomorphic.jpa.EMF at com.isomorphic.jpa.JPADataSource.execute(JPADataSource.java:340) at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:721) at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658) at com.isomorphic.application.AppBase.execute(AppBase.java:491) at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1714) at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:199) at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 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:122) 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.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 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) </PRE> "
Code:
[ERROR] [GAEDS_js] - 16:14:54.531:XRP2:WARN:RPCManager:Transport error - HTTP code: 500 for URL: /fillData, response: {operationId: "custom", clientContext: undef, context: Obj, transactionNum: 1, httpResponseCode: 500, httpResponseText: "<html>\n<head>\n<meta http-equiv="Content-..."[4379], xmlHttpRequest: [object XMLHttpRequest], transport: "xmlHttpRequest", status: -90, clientOnly: undef, httpHeaders: Obj, isStructured: true, callbackArgs: null, results: Obj, data: "Transport error - HTTP code: 500 for URL..."[51]}
And here's the Console view that goes with launching the application and opening it in the browser:
Code:
Initializing AppEngine server Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger Successfully processed C:\eclipse\workspace\GAEDS\war\WEB-INF/appengine-web.xml Successfully processed C:\eclipse\workspace\GAEDS\war\WEB-INF/web.xml jetty-6.1.x ISC: Configuring log4j from: file:/C:/eclipse/workspace/GAEDS/war/WEB-INF/classes/log4j.isc.config.xml === 2011-08-08 21:47:09,141 [main] INFO ISCInit - Isomorphic SmartClient Framework - Initializing === 2011-08-08 21:47:09,169 [main] INFO ConfigLoader - Attempting to load framework.properties from CLASSPATH === 2011-08-08 21:47:09,343 [main] INFO ConfigLoader - Successfully loaded framework.properties from CLASSPATH at location: jar:file:/C:/eclipse/workspace/GAEDS/war/WEB-INF/lib/isomorphic_core_rpc.jar!/framework.properties === 2011-08-08 21:47:09,343 [main] INFO ConfigLoader - Attempting to load project.properties from CLASSPATH === 2011-08-08 21:47:09,344 [main] INFO ConfigLoader - Unable to locate project.properties in CLASSPATH === 2011-08-08 21:47:09,347 [main] INFO ConfigLoader - Successfully loaded isc_interfaces.properties from CLASSPATH at location: jar:file:/C:/eclipse/workspace/GAEDS/war/WEB-INF/lib/isomorphic_core_rpc.jar!/isc_interfaces.properties === 2011-08-08 21:47:09,347 [main] INFO ConfigLoader - Attempting to load server.properties from CLASSPATH === 2011-08-08 21:47:09,349 [main] INFO ConfigLoader - Successfully loaded server.properties from CLASSPATH at location: file:/C:/eclipse/workspace/GAEDS/war/WEB-INF/classes/server.properties === 2011-08-08 21:47:09,359 [main] INFO Logger - Logging system started. === 2011-08-08 21:47:09,359 [main] INFO ISCInit - Isomorphic SmartClient Framework (SC_SNAPSHOT-2011-08-02/EVAL Deployment 2011-08-02) - Initialization Complete === 2011-08-08 21:47:09,361 [main] INFO ISCInit - Auto-detected webRoot - using: C:\eclipse\workspace\GAEDS\war Started SelectChannelConnector@0.0.0.0:8888 The server is running at http://localhost:8888/ === 2011-08-08 21:47:17,327 [53-1] INFO PoolManager - SmartClient pooling disabled for 'country_DataSource' objects === 2011-08-08 21:47:17,516 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\GAEDS_js\sc\system\schema\builtinTypes.xml: 8ms === 2011-08-08 21:47:17,789 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\ds\country_DataSource.ds.xml: 2ms === 2011-08-08 21:47:17,829 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\GAEDS_js\sc\system\schema\DataSource.ds.xml: 39ms === 2011-08-08 21:47:17,956 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\GAEDS_js\sc\system\schema\DataSourceField.ds.xml: 4ms === 2011-08-08 21:47:18,026 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\ds\city_DataSource.ds.xml: 2ms === 2011-08-08 21:48:11,987 [53-1] INFO RequestContext - URL: '/GAEDS_js/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18': Moz (Gecko) with Accept-Encoding header === 2011-08-08 21:48:12,010 [53-1] DEBUG XML - Parsed XML from (in memory stream): 3ms === 2011-08-08 21:48:12,013 [53-1] DEBUG XML - Parsed XML from C:\eclipse\workspace\GAEDS\war\GAEDS_js\sc\system\schema\List.ds.xml: 1ms === 2011-08-08 21:48:12,070 [53-1] DEBUG RPCManager - Processing 1 requests. === 2011-08-08 21:48:12,084 [53-1] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ }, operationConfig:{ dataSource:"country_DataSource", operationType:"fetch", textMatchStyle:"substring" }, startRow:0, endRow:75, componentId:"isc_ListGrid_0", appID:"builtinApplication", operation:"country_DataSource_fetch", oldValues:{ } } === 2011-08-08 21:48:12,091 [53-1] INFO IDACall - Performing 1 operation(s) === 2011-08-08 21:48:12,106 [53-1] DEBUG AppBase - [builtinApplication.country_DataSource_fetch] No userTypes defined, allowing anyone access to all operations for this application === 2011-08-08 21:48:12,135 [53-1] DEBUG AppBase - [builtinApplication.country_DataSource_fetch] No public zero-argument method named '_country_DataSource_fetch' found, performing generic datasource operation === 2011-08-08 21:48:12,136 [53-1] DEBUG JPADataSource - [builtinApplication.country_DataSource_fetch] Creating EntityManager and starting transaction. === 2011-08-08 21:48:12,140 [53-1] DEBUG EMF - [builtinApplication.country_DataSource_fetch] Initializing EMF provider === 2011-08-08 21:48:12,221 [53-1] ERROR IDACall - Top-level servlet error: java.lang.NoSuchFieldError: NUCLEUS_CONTEXT_LOADER at org.datanucleus.NucleusContext.<clinit>(NucleusContext.java:70) at org.datanucleus.api.jpa.JPAEntityManagerFactory.<init>(JPAEntityManagerFactory.java:362) at org.datanucleus.api.jpa.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:91) at javax.persistence.Persistence.createFactory(Persistence.java:172) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:112) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:66) at com.isomorphic.jpa.EMFProviderLMT.<init>(EMFProviderLMT.java:71) at com.isomorphic.jpa.EMFProviderLMT.<init>(EMFProviderLMT.java:60) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:132) at com.isomorphic.jpa.EMF.<clinit>(EMF.java:65) at com.isomorphic.jpa.JPADataSource.execute(JPADataSource.java:340) at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:721) at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658) at com.isomorphic.application.AppBase.execute(AppBase.java:491) at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1714) at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:199) at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 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:122) 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.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 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)
Comment