[appengine-java] Re: java.lang.NoSuchMethodError: com.googlecode.objectify.Objectify.delete([Ljava/lang/Object;)V
Hi, This is very probably a question related to Objectfify that is a package independent, i.e 3rd party, of App Engine. You should ask it there http://groups.google.com/group/objectify-appengine. Question though: do you have a no-arg constructor in your class source code ? It's required. regards didier On Jan 1, 10:20 pm, Ueli Niggli ueli.nig...@gmail.com wrote: Hello everyone I added some propertys to a class which I use to store objects in a datastore. Now I am getting the above error message when I try to delete a object from the datastore. Of course I tried emptying the datastore because of the changed class but that didnßt help. I didn´t change anything in the function where the error is thrown: @Override public myClass removeMyClass(myClass objectMyClass) { Objectify ofy = ObjectifyService.begin(); ofy.delete(objectMyClass); return objectMyClass; } I am only making some changes to this application which was written by some other guys, so I am pretty helpless at the moment... Thanks for any help. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: How to identify cause of this error?
Hi, The cause of your issue is defined by the line Caused by: javax.jdo.JDOException: Error creating the MetaDataManager for API JDO When you start googling this, you find quite a lot of issues related to JDO implementation itself: maybe you face one of those bugs. JDO in GAE is based on Datanucleus open source package: further dev of this package is currently under scrutiny by Google. See http://groups.google.com/group/google-appengine-java/browse_thread/thread/defc6d14445318b8/75a1e7b5bcbc1bb3#75a1e7b5bcbc1bb3 (especially messages by Ikai Lan from Google) So, maybe it is good time for you to see what 3rd party packages like Objectify and others you can use to replace JDO. regards didier On Jan 1, 8:13 pm, Tadas ?ubonis tadas.subo...@gmail.com wrote: I am getting this error (stacktrace). getMessage() returns null from exception... How should I identify where problem lies? I am getting this error when trying to save object with makePersistent. Googled a lot and still no clues... :/ java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.development.agent.runtime.Runtime. invoke(Runtime.java:100) at com.dblog.server.core.FrontController._handle(FrontController. java:73) at com.dblog.server.core.FrontController.doPost(FrontController.java :33) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 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.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 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:349) 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: javax.jdo.JDOException: Error creating the MetaDataManager for API JDO : NestedThrowables: java.lang.reflect.InvocationTargetException at org.datanucleus.jdo.NucleusJDOHelper. getJDOExceptionForNucleusException(NucleusJDOHelper.java:419) at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent( JDOPersistenceManager.java:674) at org.datanucleus.jdo.JDOPersistenceManager.makePersistent( JDOPersistenceManager.java:694) at com.dblog.server.blog.Controller.newAction(Controller.java:75) ... 34 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance( NativeConstructorAccessorImpl.java:39) at
[appengine-java] Re: Sharing datastore persisted objects (table) across applications
Hi, My understaning of Datastore based on Google BigTables is that you can't share objects in 2 different apps (i.e using different id) because the app id is part of the key of the entity. BigTable, Datastore and GAD enforce a strong sandboxing based on this id. The app id in the key is described here: http://code.google.com/appengine/articles/storage_breakdown.html#anc-tables So, to share unique copy of same data, you have develop some inter-app communication via servlets called by 1 application into the other regards didier On Jan 1, 1:55 pm, dreamer venugopal.vasire...@gmail.com wrote: Hi, Not sure if possible to share datastore objects across application, single reporting application for several customer applications, assuming reporting app know complete keys. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Question About Loading HTML into a Frame
Hi, Is you Summary.html properly defined as a static file ? See how-to in http://code.google.com/appengine/docs/java/config/appconfig.html#Static_Files_and_Resource_Files. If not defined directly (or via a containing directory), GAE won't be able to serve it to your application. Hence the 404. regards didier On Jan 1, 5:33 pm, Eric Atkinson atki4...@gmail.com wrote: The App Engine Manual says that any file I put in the WAR (or subdirectory) is automatically known to the app, so why, when I use the following code... Frame frame = new Frame(/StrategicInternationalSystems/war/WEB-INF/ pages/Summary.html); dockLayoutPanel.add(frame); ...does it tell me: HTTP ERROR 404 Problem accessing /StrategicInternationalSystems/war/WEB-INF/pages/ Summary.html. Reason: NOT_FOUND I think it has something to do with the fact that I started coding the app (using a new project) using GWT Designer. Why? Because when it was just App Engine and the GWT Toolkit before, it executed this code fine. I'm at my wit's end; please help understand why this code no longer works because of using GWT Designer (I think). -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: java.lang.NoSuchMethodError: com.googlecode.objectify.Objectify.delete([Ljava/lang/Object;)V
Hello Didier thank you for your reply, I will ask the question in your mentioned group. I do have a non-arg constructor, yes. Greetz Ueli -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Check existence: datastoreservice.get(key) or __key__ property query(keys-only) or ancestor query(keys-only)?
Let's suppose I need to check by a key if the specified entity exists in the datastore. What is the most proper way to achieve that?I have the next ways: 1) datastoreservice.get(key). 2) execute keys-only query with the __key__ property: new Query(Kind).addFilter(Entity.KEY_RESERVED_PROPERTY, FilterOperator.EQUAL, key).setKeysOnly() 3) execute keys-only query with the ancestor key: new Query(Kind).setAncestor(key).setKeysOnly() I think that 2) or 3) is more efficient than 1) because we don't need to deserialize the whole entity from the datastore, just get only keys. But I don't have any suggestions about: 2) or 3) is more efficient? -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Check existence: datastoreservice.get(key) or __key__ property query(keys-only) or ancestor query(keys-only)?
Hi, You're right about 2): more efficient because only key is accessed: i/ o limited to index rather than index + table when you fetch the entire entity. So more disk i/o and more bytes to transfer between the datastore server and the server of your jvm. About 3): 2 important points come to mind: (a) using ancestor key means that you know how your entities are grouped in the datastore for transactional purposes: i.e you need to know the parent for each entity key you want to check and (b) according to this grouping, get on 1 ancestor key may return more than 1 child entity and then you may lose the performance optimization that you are looking for. regards didier On Jan 2, 11:16 am, ss.require ss.requ...@gmail.com wrote: Let's suppose I need to check by a key if the specified entity exists in the datastore. What is the most proper way to achieve that?I have the next ways: 1) datastoreservice.get(key). 2) execute keys-only query with the __key__ property: new Query(Kind).addFilter(Entity.KEY_RESERVED_PROPERTY, FilterOperator.EQUAL, key).setKeysOnly() 3) execute keys-only query with the ancestor key: new Query(Kind).setAncestor(key).setKeysOnly() I think that 2) or 3) is more efficient than 1) because we don't need to deserialize the whole entity from the datastore, just get only keys. But I don't have any suggestions about: 2) or 3) is more efficient? -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Check existence: datastoreservice.get(key) or __key__ property query(keys-only) or ancestor query(keys-only)?
You're right about 2): more efficient because only key is accessed: i/ o limited to index rather than index + table when you fetch the entire entity. So more disk i/o and more bytes to transfer between the datastore server and the server of your jvm. OK About 3): 2 important points come to mind: (a) using ancestor key means that you know how your entities are grouped in the datastore for transactional purposes: i.e you need to know the parent for each entity key you want to check But I also need to know the parent key for '2)' way. What is the difference? and (b) according to this grouping, get on 1 ancestor key may return more than 1 child entity and then you may lose the performance optimization that you are looking for. When I call setAncestor() I pass the complete key: all parents keys + the entity key. So query can't return more than 1 entity. So I don't see the benefit from '2)' way accoring to your reply. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Arabic support under Google App Engine for Java
I am now stepping my first steps in Google App Engine world I have Arabic language RTL support as a MUST requirements? Is there a sample code that covers this? Pls help. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] duplicate PersistenceManagerFactory exception. Spring transactions management
Hi! I'm new to GAE and had quite a lot of issues that I solved, but stuck with this one. The app deploys/runs fine locally, but fails to run on the server. ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springpmf' defined in ServletContext resource [/WEB-INF/beans.xml]: Invocation of init method failed; nested exception is javax.jdo.JDOFatalUserException: Application code attempted to create a PersistenceManagerFactory named keepeye, but one with this name already exists! Instances of PersistenceManagerFactory are extremely slow to create and it is usually not necessary to create one with a given name more than once. Instead, create a singleton and share it throughout your code. If you really do need to create a duplicate PersistenceManagerFactory (such as for a unittest suite), set the appengine.orm.disable.duplicate.pmf.exception system property to avoid this error. But the PMF is created just once (see below conf) by spring and injected into my dao. All the beans are singletons. I have the following spring config: !-- JDO PMF config -- bean id=springpmf class=org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean property name=persistenceManagerFactoryName value=keepeye / /bean bean id=pmfproxy class=org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy property name=targetPersistenceManagerFactory ref=springpmf / property name=allowCreate value=false / /bean bean id=transactionManager class=org.springframework.orm.jdo.JdoTransactionManager property name=persistenceManagerFactory ref=pmfproxy/property /bean bean id=dao class=wowpop.service.DAO property name=pmf ref=pmfproxy/property /bean Plz suggest something:) The dao public class DAO { //private static final PersistenceManagerFactory PMF = JDOHelper.getPersistenceManagerFactory(keepeye); private PersistenceManagerFactory pmf; public void save(Object obj) { PersistenceManager pm = pmf.getPersistenceManager(); pm.makePersistent(obj); //pm.close(); } /** * @return list of ServerStats that fit the dates range */ public ListServerStats findInDateRange(long from, long to) { PersistenceManager pm = pmf.getPersistenceManager(); System.out.println(got manager); Query q = pm.newQuery(ServerStats.class, time=:from time =:to); ListServerStats result = (ListServerStats) q.execute(from, to); //pm.close(); return result; } /** * @param pmf the pmf to set */ public void setPmf(PersistenceManagerFactory pmf) { this.pmf = pmf; } } -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Check existence: datastoreservice.get(key) or __key__ property query(keys-only) or ancestor query(keys-only)?
Hi, The difference is: in 3) you give the key of the ancestor and the ds will return you the keys of the entities having this ancestor (potentially more than 1 one) and in 2) you give the key of the entity that you want to check itself. in 2) you can get the key from somewhere without having to know if this key contains the key of an ancestor (defining an entity group) or not. In 3), you must have a better understanding of the underlying app. regards didier On Jan 2, 11:47 am, ss.require ss.requ...@gmail.com wrote: You're right about 2): more efficient because only key is accessed: i/ o limited to index rather than index + table when you fetch the entire entity. So more disk i/o and more bytes to transfer between the datastore server and the server of your jvm. OK About 3): 2 important points come to mind: (a) using ancestor key means that you know how your entities are grouped in the datastore for transactional purposes: i.e you need to know the parent for each entity key you want to check But I also need to know the parent key for '2)' way. What is the difference? and (b) according to this grouping, get on 1 ancestor key may return more than 1 child entity and then you may lose the performance optimization that you are looking for. When I call setAncestor() I pass the complete key: all parents keys + the entity key. So query can't return more than 1 entity. So I don't see the benefit from '2)' way accoring to your reply. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Arabic support under Google App Engine for Java
Hi, Some interesting how-to post in App Engine for Python forum: http://groups.google.com/group/google-appengine/browse_thread/thread/4dd9e2d2b7213311. You can probably easily adapt that to the Java context. With its UTF encoding, Java can support all alphabets. Isn't your question more a front-end question rather than a back-end one ? What is you choice for front-end: Google Web Toolkit ? other ? please, detail your question if possible. regards didier On Jan 2, 11:50 am, AD amrdarwish1...@gmail.com wrote: I am now stepping my first steps in Google App Engine world I have Arabic language RTL support as a MUST requirements? Is there a sample code that covers this? Pls help. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: How to completely erase the datastore of an app
You can use the Datastore Admin tool available to Python apps that came with App Engine 1.3.8 to delete data more easily: http://googleappengine.blogspot.com/2010/10/new-app-engine-sdk-138-includes-new.html (under Delete all (or a part) of your application’s data) As it says in the blog post you can use it for Java apps, too. I created a simple Python application version as version number 1, then uploaded the actual Java app as version 2 and set that as the default version. Works great. If you're new to Python like I am there's a little how-to for Java-devs here: https://groups.google.com/d/topic/google-appengine-java/aRLhRzADuF4/discussion Once you've done that, you can use the command line utility to remove all unused indexes: appcfg.py vacuum_indexes app-root/ More options are described here: http://code.google.com/appengine/docs/python/tools/uploadinganapp.html -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Check existence: datastoreservice.get(key) or __key__ property query(keys-only) or ancestor query(keys-only)?
I've got your idea. The '2)' way is more flexible, because using '3)' we should guarantee that the key is complete and the key is not an ancestor for other entities(extra constraints for the app). So now I'm agreed with you that '2)' way is a choice. Thanks, very much! -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] JDO - I can't update an object with One-to-One Relationships
Hello everyone. I've an issue : I can't update a pojo object. I have two classes : A user and a location. A user HAS A location. My servlet do this : 1) create a user without a location, make it persist 2) retrieve a user, set the location (for the first time), make it persist 3) retrieve a user, set a new location, make it persist 4) retrieve a user, show if the position has been updated My issue : On step 4), I see the location initialized the first time. My new position is never saved. More strange, I can see pojo location objects in the DataStore Viewer ( http://localhost:/_ah/admin/datastore) If someone know how to fix it, I'll be grateful. ~Yoann~ Complete source code are in the attached files. A more simple source : Pojos: @PersistenceCapable public class POJOUser { /** Primary key */ @PrimaryKey @Persistent private String key = null; /** Username */ @Persistent private String username = null; /** Password */ @Persistent private String password = null; /** The last location of the user */ @Persistent private POJOLocation lastLocation = null; } @PersistenceCapable public class POJOLocation implements Location { /** Primary key */ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key = null; /** X */ @Persistent private Double x = null; /** Y */ @Persistent private Double y = null; } PMF : public class DataAccessLayerForGoogleAppEngine implements DataAccessLayer { /** Persistence Manager */ private PersistenceManagerFactory PMF = JDOHelper .getPersistenceManagerFactory(transactions-optional); @Override public void updateUserLocation(String username, Location newLocation) { PersistenceManager pm = PMF.getPersistenceManager(); try { // Get the user POJOUser user = pm.getObjectById(POJOUser.class, username); if (user != null) { // Update the location user.setLastLocation(new POJOLocation(newLocation)); } } catch (JDOObjectNotFoundException ex) { } finally { pm.close(); } } ... } -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. package lan.polichouz.tracer.server.impl; import java.util.List; import javax.jdo.JDOHelper; import javax.jdo.JDOObjectNotFoundException; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; import javax.jdo.Query; import lan.polichouz.tracer.server.DataAccessLayer; import lan.polichouz.tracer.server.Location; import lan.polichouz.tracer.server.impl.pojo.POJOLocation; import lan.polichouz.tracer.server.impl.pojo.POJOUser; /** * Implementation of a Data Access Layer using Google AppEngine framework. * * @author yoyo */ public class DataAccessLayerForGoogleAppEngine implements DataAccessLayer { // TODO user and admin name MUST be unique (primary key). /** Persistence Manager */ private PersistenceManagerFactory PMF = JDOHelper .getPersistenceManagerFactory(transactions-optional); @Override public String getUsernamePassword(String username) { String realPassword = null; PersistenceManager pm = PMF.getPersistenceManager(); try { // Get the user POJOUser user = pm.getObjectById(POJOUser.class, username); if (user != null) { realPassword = user.getPassword(); } } catch (JDOObjectNotFoundException ex) { ex.printStackTrace(); } finally { pm.close(); } return realPassword; } @Override public String getAdminPassword(String adminName) { String realPassword = null; PersistenceManager pm = PMF.getPersistenceManager(); try { // Get the user POJOUser user = pm.getObjectById(POJOUser.class, adminName); if (user != null) { // Get the password realPassword = user.getPassword(); } } catch (JDOObjectNotFoundException ex) { } finally { pm.close(); } return realPassword; } @Override public void updateUserLocation(String username, Location newLocation) { PersistenceManager pm = PMF.getPersistenceManager(); try { // Get the user POJOUser user = pm.getObjectById(POJOUser.class, username); if (user != null) { // Update the location user.setLastLocation(new POJOLocation(newLocation)); //XXX not saved } } catch (JDOObjectNotFoundException ex) { } finally { pm.close(); } } @Override public Location getUserLocation(String username) { Location location = null; PersistenceManager pm = PMF.getPersistenceManager(); try { // Get the user POJOUser user = pm.getObjectById(POJOUser.class, username); if
[appengine-java] Re: Prevent filesystem writes in development mode?
Upon further investigation, it seems that none of the sandbox restrictions are applied in local development mode. I can even create threads in my servlets when running them locally. Is that normal? I tried it on two separate machines, one running Windows, the other one running Linux, using the Google Plugin for Eclipse and AppEngine 1.4.0. I created the HelloWorld-Project and added various file writes and threads to GreetingServiceImpl.java. I run it with the default arguments using Debug as Web-Application. Can someone confirm if that's the normal behaviour, or if something is wrong with my setups? If it's normal, how do you verify that your code is not doing something that will fail on the actual AppEngine servers? Thanks, Tobias -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] transacions, JDO and spring
Hi, I'm trying to write a sample app with spring and JDO. From what I've read, I've written the following config bean id=springpmf class=org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean property name=persistenceManagerFactoryName value=keepeye / /bean tx:annotation-driven / bean id=pmfproxy class=org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy property name=targetPersistenceManagerFactory ref=springpmf / property name=allowCreate value=false / /bean bean id=transactionManager class=org.springframework.orm.jdo.JdoTransactionManager property name=persistenceManagerFactory ref=pmfproxy/property /bean bean id=dao class=wowpop.service.DAO property name=pmf ref=pmfproxy/property /bean Now when run the app throws an exception rg.springframework.transaction.CannotCreateTransactionException: Could not open JDO PersistenceManager for transaction; nested exception is java.lang.IllegalStateException: No JDO PersistenceManager bound to thread, and configuration does not allow creation of non-transactional one here Can someone help? -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Prevent filesystem writes in development mode?
I have to correct myself on the HelloWorld-Project. It does throw an exception as expected, I think I had some mistake in my test case the first time I tried. However, I think i located the problem now: The sandbox restrictions don't seem to apply while Guice initializes itself and any servlets. If I have my servlets controlled by Guice and put code that should normally throw an AccessControlException inside the guice module's configureServlets() method, or within any of my servlets' init()-method, it is executed fine. If I bind the servlet using web.xml, the same init() method throws an exception. Inside the doPost or doGet-methods of the servlets, the test code always throws an AccessControlException, regardless of the servlet being set up by Guice or web.xml. I think the Guice module code (and the configured servlet's init()-methods) are executed within the scope of a ServletContextListener, and somehow the sandbox restrictions are not applied there? Here's the code I used to check for exceptions - it should normally fail within the AppEngine sandbox: new Thread() { { run(); } }; File f; try { f = File.createTempFile(foo, tmp); f.createNewFile(); f.delete(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Should I open a bug report for this? Is it a Guice or an AppEngine-problem? I can provide my test-case project if needed. Regards, Tobias -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [objectify-appengine] Re: [appengine-java] Re: persistent and scalable global atomic counter: not possible with GAE?
Upon deeper consideration, whether or not Monotonic currently could produce dups depends on the exact behavior of: MemcacheService.increment(java.lang.Object key, long delta, java.lang.Long initialValue) Unfortunately the documentation is ambiguous about what the return value will be when MemcacheService is down. Does it return null or does it return initialValue? If it returns null like the non-initial-value version (which is what the code currently assumes), the current Monotonic code is safe and won't produce duplicates. It will throw an IllegalStateException. If this method returns initialValue, it's still pretty easy to change the logic to guarantee IllegalStateException instead. Goog, any clarification of what MemcacheService.increment() does? Jeff On Sun, Jan 2, 2011 at 6:27 AM, Jeff Schwartz jefftschwa...@gmail.com wrote: It is safe. The montonic implementation expressly handled those cases where memcache is not available and throws an IllegalStateException. When memcache is not available you can be almost certain that the datastore isn't available as well so responding to these cases appropriately - such as redirecting a user to a page explaining that the datastore isn't currently available - will ensure that you maintain the integrity of the data. Jeff Schwartz On Sun, Jan 2, 2011 at 12:56 AM, aswath satrasala aswath.satras...@gmail.com wrote: Hi MG, I am currently using the following in my application. http://blog.appenginefan.com/2009/04/efficient-global-counters-revisited.html. It does not use Objectify But, I was planning to use the Objecify Monotic, so as to keep counter implementation simple and not worry about another library details. Now, with your valid points, it is good discussion thread with Objectify team and find out what they think. -Aswath www.AccountingGuru.in On Sat, Jan 1, 2011 at 10:13 PM, MG michael.glas...@gmail.com wrote: Monotonic in Objectify, as defined here: http://code.google.com/p/objectify-appengine/source/browse/trunk/src/com/googlecode/objectify/helper/Monotonic.java?r=620 is not 100% safe. For example: 1. Memcache is off, lastMax is 100 2. Memcache goes up for 1 sec, five requests get 101, 102, ... 105 numbers for them 3. Memcache goes off again for 1 sec; requests from #2 are still preparing data to insert in the related datastore model 4. Memcache goes up, another five requests get 101, 102, ..., 105 numbers for them 5. now we have duplicate numbers. MG On Saturday, January 1, 2011 11:08:50 AM UTC-5, aswath wrote: I was seeing your link. You have used Objectify. Objectify already provides Monotonic helper class. -Aswath www.accountingguru.in -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- Jeff Schwartz -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [objectify-appengine] Re: [appengine-java] Re: persistent and scalable global atomic counter: not possible with GAE?
Ok, upon further further reflection, MG is right there is an opportunity for failure, even if MemcacheService.increment() behaves as expected. Another description of the problem, with indentation to distinguish the two threads: Initial state, last value in db (and memcache) is 100 STARTING SAVE OF FIRST OBJ value 101 obtained from memcache increment() put() of first object with 101 begins (but not finished) Memcache gets reset for whatever reason STARTING SAVE OF SECOND OBJ Querying for max value produces 100 Memcache increment() with initial value produces 101 put() of second object with 101 executes put() of first object with 101 completes At the end of this race you end up with duplicate objects with value of 101. On the whole this seems pretty unlikely. It's worth putting a note in Monotonic's documentation, but even with a small risk of occasional duplicates the tool works effectively enough for my needs (synchronization of rapidly changing data with a slave pseudo-database outside of GAE). MG, I'm curious about how you're approaching the problem, because my gut sense right now is that there isn't a scalable way to produce a 100% guaranteed monotonically increasing number given the tools available in GAE. Jeff On Sun, Jan 2, 2011 at 8:36 AM, Jeff Schnitzer j...@infohazard.org wrote: Upon deeper consideration, whether or not Monotonic currently could produce dups depends on the exact behavior of: MemcacheService.increment(java.lang.Object key, long delta, java.lang.Long initialValue) Unfortunately the documentation is ambiguous about what the return value will be when MemcacheService is down. Does it return null or does it return initialValue? If it returns null like the non-initial-value version (which is what the code currently assumes), the current Monotonic code is safe and won't produce duplicates. It will throw an IllegalStateException. If this method returns initialValue, it's still pretty easy to change the logic to guarantee IllegalStateException instead. Goog, any clarification of what MemcacheService.increment() does? Jeff On Sun, Jan 2, 2011 at 6:27 AM, Jeff Schwartz jefftschwa...@gmail.com wrote: It is safe. The montonic implementation expressly handled those cases where memcache is not available and throws an IllegalStateException. When memcache is not available you can be almost certain that the datastore isn't available as well so responding to these cases appropriately - such as redirecting a user to a page explaining that the datastore isn't currently available - will ensure that you maintain the integrity of the data. Jeff Schwartz On Sun, Jan 2, 2011 at 12:56 AM, aswath satrasala aswath.satras...@gmail.com wrote: Hi MG, I am currently using the following in my application. http://blog.appenginefan.com/2009/04/efficient-global-counters-revisited.html. It does not use Objectify But, I was planning to use the Objecify Monotic, so as to keep counter implementation simple and not worry about another library details. Now, with your valid points, it is good discussion thread with Objectify team and find out what they think. -Aswath www.AccountingGuru.in On Sat, Jan 1, 2011 at 10:13 PM, MG michael.glas...@gmail.com wrote: Monotonic in Objectify, as defined here: http://code.google.com/p/objectify-appengine/source/browse/trunk/src/com/googlecode/objectify/helper/Monotonic.java?r=620 is not 100% safe. For example: 1. Memcache is off, lastMax is 100 2. Memcache goes up for 1 sec, five requests get 101, 102, ... 105 numbers for them 3. Memcache goes off again for 1 sec; requests from #2 are still preparing data to insert in the related datastore model 4. Memcache goes up, another five requests get 101, 102, ..., 105 numbers for them 5. now we have duplicate numbers. MG On Saturday, January 1, 2011 11:08:50 AM UTC-5, aswath wrote: I was seeing your link. You have used Objectify. Objectify already provides Monotonic helper class. -Aswath www.accountingguru.in -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- Jeff Schwartz -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Tutorial 1: Getting started with guit framework. 2:30 minutes video
http://www.youtube.com/watch?v=S_u7CkU_NnI -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Lightweight Best performing MVC framework - Recommendation
I've got http://www.stripesframework.org/ cold starting in under 2 secs with http sessions enabled On Dec 29, 9:08 am, Sree sreeju...@gmail.com wrote: Hello, I am new to Java and App Engine, and coming from ASP.NET C# and Windows Azure world. I am looking for a lightweight best performing java based MVC framework. I would like to migrate my ASP.NET MVC project to App Engine (Java). It would be great if you can share your experience. I am open to Python as well, but learning Java is faster than Python, since I am good at C#. Thanks in Advance. Regards Sree -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Nice Online XSLT Transformer Hosted in GAE
Useful for tests when developing XSLT: http://xslttest.appspot.com/ Developed with Java, GWT and Google Plugin for Eclipse. Hosted in GAE. Cheers -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: Lightweight Best performing MVC framework - Recommendation
For the Groovy inclined, I've been having a lot of fun learning Gaelyk: http://gaelyk.appspot.com/ -- biz: http://www.linkedin.com/in/vincentstoessel/ personal: http://www.xaymaca-studios.com/ On Thu, Dec 30, 2010 at 5:56 AM, Davi Nogueira davis...@gmail.com wrote: I like, VRaptor, http://vraptor.caelum.com.br/en/ Icarus wrote: Stripes ? Thanks, Ic On Dec 30, 12:02 am, Ikai Lan (Google) ikai.l+gro...@google.com wrote: Um ... those are like the opposite of lightweight. Here are some I like: Play Framework: probably the most underrated Java framework I've ever seehttp://www.playframework.org/ Slim3: built for App Engine. Cons: kind of needs deep Eclipse integrationhttp://sites.google.com/site/slim3appengine/ There are more. I'll post in a bit. What are other frameworks everyone else here likes? -- Ikai Lan Developer Programs Engineer, Google App Engine Blogger:http://googleappengine.blogspot.com Reddit:http://www.reddit.com/r/appengine Twitter:http://twitter.com/app_engineOn Wed, Dec 29, 2010 at 10:49 AM, Nasif Noorudeen nas...@gmail.com wrote: spring jsf On 12/29/10, Sree sreeju...@gmail.com wrote: Hello, I am new to Java and App Engine, and coming from ASP.NET C# and Windows Azure world. I am looking for a lightweight best performing java based MVC framework. I would like to migrate my ASP.NET MVC project to App Engine (Java). It would be great if you can share your experience. I am open to Python as well, but learning Java is faster than Python, since I am good at C#. Thanks in Advance. Regards Sree -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Question About Loading HTML into a Frame
Your question, although not the answer that worked, got me to thinking about whether the html file itself was properly defined, because before I used OpenOffice to create the html document and this time I used Google Docs to create the html document, and that was the problem. For whatever very strange reason, app engine won't load an html page if I create on google docs and then download it into the war. On the other hand, when I created the document again using OpenOffice, it worked. Thank you for hinting at the definition of the file itself even if this didn't turn out to be the problem. On Jan 2, 3:50 am, Didier Durand durand.did...@gmail.com wrote: Hi, Is you Summary.html properly defined as a static file ? See how-to inhttp://code.google.com/appengine/docs/java/config/appconfig.html#Stat If not defined directly (or via a containing directory), GAE won't be able to serve it to your application. Hence the 404. regards didier On Jan 1, 5:33 pm, Eric Atkinson atki4...@gmail.com wrote: The App Engine Manual says that any file I put in the WAR (or subdirectory) is automatically known to the app, so why, when I use the following code... Frame frame = new Frame(/StrategicInternationalSystems/war/WEB-INF/ pages/Summary.html); dockLayoutPanel.add(frame); ...does it tell me: HTTP ERROR 404 Problem accessing /StrategicInternationalSystems/war/WEB-INF/pages/ Summary.html. Reason: NOT_FOUND I think it has something to do with the fact that I started coding the app (using a new project) using GWT Designer. Why? Because when it was just App Engine and the GWT Toolkit before, it executed this code fine. I'm at my wit's end; please help understand why this code no longer works because of using GWT Designer (I think). -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Nice Online XSLT Transformer Hosted in GAE
looks cool On Jan 2, 10:23 pm, XSLT Master xslt@gmail.com wrote: Useful for tests when developing XSLT: http://xslttest.appspot.com/ Developed with Java, GWT and Google Plugin for Eclipse. Hosted in GAE. Cheers -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Lightweight Best performing MVC framework - Recommendation
+1 on Stripes. Extremely easy to setup and use - very powerfull and performs quite well on GAE as its basically just a somewhat simple filter/servlet and JSP with a stripes taglib though still, as I said, powerfull. I had to make a few adjustments to get it to serve @UrlBinding(/) for example and I ALWAYS want it to exec controller before being forwarded to any JSP files. Regards, Lars Borup -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Lightweight Best performing MVC framework - Recommendation
Stripes; easy, powerful, and flexible. On 2010-12-29 11:02, Ikai Lan (Google) wrote: Um ... those are like the opposite of lightweight. Here are some I like: Play Framework: probably the most underrated Java framework I've ever see http://www.playframework.org/ Slim3: built for App Engine. Cons: kind of needs deep Eclipse integration http://sites.google.com/site/slim3appengine/ There are more. I'll post in a bit. What are other frameworks everyone else here likes? -- Ikai Lan Developer Programs Engineer, Google App Engine Blogger: http://googleappengine.blogspot.com http://googleappengine.blogspot.com/ Reddit: http://www.reddit.com/r/appengine Twitter: http://twitter.com/app_engine On Wed, Dec 29, 2010 at 10:49 AM, Nasif Noorudeen nas...@gmail.com mailto:nas...@gmail.com wrote: spring jsf On 12/29/10, Sree sreeju...@gmail.com mailto:sreeju...@gmail.com wrote: Hello, I am new to Java and App Engine, and coming from ASP.NET http://ASP.NET C# and Windows Azure world. I am looking for a lightweight best performing java based MVC framework. I would like to migrate my ASP.NET http://ASP.NET MVC project to App Engine (Java). It would be great if you can share your experience. I am open to Python as well, but learning Java is faster than Python, since I am good at C#. Thanks in Advance. Regards Sree -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com mailto:google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com mailto:google-appengine-java%2bunsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com mailto:google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com mailto:google-appengine-java%2bunsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- 0x2B | ~0x2b -- Hamlet -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Error on my application
Hi all, I want to ask about error message diplayed on my application : Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it. this error message appeared when i deployed my application to appengine. But on my localhost the application runs normally. Could anyone give me an advice to solve this problem ? thank you -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.