我刚刚开始用谷歌AppEngine开发,现在我有了我的第一个问题。
我从Google-IO 2011中获取了Todo-Example-Project,并进行了一些更改,现在我在应用程序中获得了以下StackTrace:
Caused by: java.lang.NullPointerException: null
at com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.doFire(AbstractRequestContext.java:1102)
at com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.fire(AbstractRequestContext.java:569)
at com.google.web.bindery.requestfactory.shared.impl.AbstractRequest.fire(AbstractRequest.java:54)
at com.google.web.bindery.requestfactory.shared.impl.AbstractRequest.fire(AbstractRequest.java:59)我尝试使用以下代码在GWT-Client中创建一个新实体:
MyRequest request = requestFactory.myRequest();
request.createTime().fire();服务类中的代码
static DataStore db = new DataStore();
public static Time createTime() {
return db.update(new Time());
}这是Datastore-Class中的代码
public Time update(Time item) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(item);
return item;
} finally {
pm.close();
}
}我希望你能帮助我解决这个问题。
谢谢
编辑:我想我应该补充一下,我当然已经实现了TimeLocator-Class和ServiceLocator-Class。
这是我的web.xml,因为我认为可能存在问题:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemalocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>Test.html</welcome-file>
</welcome-file-list>
<!-- RequestFactory Servlet -->
<servlet>
<servlet-name>requestFactoryServlet</servlet-name>
<servlet-class>com.google.web.bindery.requestfactory.server.RequestFactoryServlet</servlet-class>
<init-param>
<param-name>symbolMapsDirectory</param-name>
<!-- You'll need to compile with -extras and move the symbolMaps directory
to this location if you want stack trace deobfuscation to work -->
<param-value>WEB-INF/classes/symbolMaps/</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>requestFactoryServlet</servlet-name>
<url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>
<!-- Other servlets -->
<servlet>
<servlet-name>dataMessagingServlet</servlet-name>
<servlet-class>
com.google.android.c2dm.server.C2DMRetryServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dataMessagingServlet</servlet-name>
<url-pattern>/tasks/c2dm</url-pattern>
</servlet-mapping>
<!-- Security -->
<!-- Require user login for the .html welcome page -->
<security-constraint>
<web-resource-collection>
<url-pattern>/Test.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<!-- Require admin role for the tasks servlet -->
<security-constraint>
<web-resource-collection>
<web-resource-name>tasks</web-resource-name>
<url-pattern>/tasks/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>发布于 2012-03-07 08:37:58
下面是如何启动RequestFactory来解决上面的问题:
public class ClientFactory {
private final ApplicationRequestFactory requestFactory = GWT.create(ApplicationRequestFactory.class);
private EventBus eventBus;
public ClientFactory() {
eventBus = new SimpleEventBus();
requestFactory.initialize(eventBus);
}
public ApplicationRequestFactory getRequestFactory() {
return requestFactory;
}
}发布于 2011-12-29 23:53:47
您是否正确地initialize了RequestFactory实例?
看起来您没有初始化的RequestTransport:AbstractRequestContext.java:1102
https://stackoverflow.com/questions/8668874
复制相似问题