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 List<ServerStats> findInDateRange(long from, long to) {
PersistenceManager pm = pmf.getPersistenceManager();
System.out.println("got manager");
Query q = pm.newQuery(ServerStats.class, "time>=:from && time
<=:to");
List<ServerStats> result = (List<ServerStats>) 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 [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-appengine-java?hl=en.