首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AbstractRequestContext.doFire(AbstractRequestContext.java:1102)上的NullPointerException

AbstractRequestContext.doFire(AbstractRequestContext.java:1102)上的NullPointerException
EN

Stack Overflow用户
提问于 2011-12-29 22:10:58
回答 2查看 789关注 0票数 2

我刚刚开始用谷歌AppEngine开发,现在我有了我的第一个问题。

我从Google-IO 2011中获取了Todo-Example-Project,并进行了一些更改,现在我在应用程序中获得了以下StackTrace:

代码语言:javascript
复制
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中创建一个新实体:

代码语言:javascript
复制
MyRequest request = requestFactory.myRequest();
request.createTime().fire();

服务类中的代码

代码语言:javascript
复制
static DataStore db = new DataStore();

public static Time createTime() {
    return db.update(new Time());
}

这是Datastore-Class中的代码

代码语言:javascript
复制
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,因为我认为可能存在问题:

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-07 08:37:58

下面是如何启动RequestFactory来解决上面的问题:

代码语言:javascript
复制
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;
  }

}
票数 3
EN

Stack Overflow用户

发布于 2011-12-29 23:53:47

您是否正确地initializeRequestFactory实例?

看起来您没有初始化的RequestTransportAbstractRequestContext.java:1102

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8668874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档