At the end of the day, I'm thinking one of the trade-offs of using GAE/J is going to be a willingness to use BigTable behind JDO or JPA.
As I understand it, Amazon plays better with conventional systems. The way to go for Click and Cayenne on the Cloud would be EC2 or stax.net. Of course, very few applications actually need to be cloud-based anyway. Strategically, I need to explore GAE for my own work, which, ultimately, for me, is going to mean BigTable <http://en.wikipedia.org/wiki/BigTable>. -Ted. On Fri, Jul 3, 2009 at 8:38 PM, Malcolm Edgar<[email protected]> wrote: > It would be good to as the Cayenne community about this, it would not > surprise me if this could be turned off in Cayenne. > > regards Malcolm Edgar > > On Sat, Jul 4, 2009 at 7:08 AM, Bob Schellink<[email protected]> wrote: >> Trying to access Cayenne on GAE throws the exception below. >> Basically GAE doesn't allow creating new Threads, which Cayenne >> EventManager attempts to do. >> >> >> org.apache.cayenne.conf.Configuration initializeSharedConfiguration: Error >> creating shared Configuration: >> 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.apphosting.utils.security.SecurityManagerInstaller$CustomSecurityManager.checkAccess(SecurityManagerInstaller.java:72) >> at java.lang.ThreadGroup.checkAccess(Unknown Source) >> at java.lang.Thread.init(Unknown Source) >> at java.lang.Thread.<init>(Unknown Source) >> at >> org.apache.cayenne.event.EventManager$DispatchThread.<init>(EventManager.java:457) >> at org.apache.cayenne.event.EventManager.<init>(EventManager.java:97) >> at org.apache.cayenne.event.EventManager.<init>(EventManager.java:76) >> at >> org.apache.cayenne.conf.Configuration.<init>(Configuration.java:193) >> at >> org.apache.cayenne.conf.DefaultConfiguration.<init>(DefaultConfiguration.java:58) >> at >> org.apache.cayenne.conf.DefaultConfiguration.<init>(DefaultConfiguration.java:46) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown >> Source) >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >> Source) >> at java.lang.reflect.Constructor.newInstance(Unknown Source) >> at java.lang.Class.newInstance0(Unknown Source) >> at java.lang.Class.newInstance(Unknown Source) >> at >> org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:133) >> at >> org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:121) >> at >> org.apache.cayenne.conf.Configuration.getSharedConfiguration(Configuration.java:91) >> at >> org.apache.cayenne.access.DataContext.createDataContext(DataContext.java:145) >> at >> org.apache.click.extras.cayenne.CayenneTemplate.getDataContext(CayenneTemplate.java:169) >> at >> org.apache.click.extras.cayenne.CayenneTemplate.performQuery(CayenneTemplate.java:276) >> at >> com.mycorp.service.CustomerService.getCustomers(CustomerService.java:29) >> at com.mycorp.page.ViewCustomers.onRender(ViewCustomers.java:76) >> at >> org.apache.click.ClickServlet.performOnRender(ClickServlet.java:666) >> at org.apache.click.ClickServlet.processPage(ClickServlet.java:521) >> at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:339) >> at org.apache.click.ClickServlet.doGet(ClickServlet.java:257) >> >
