Java 初始化本地数据存储异常:没有为此线程注册API环境
我想使用 常规Java程序(我不想启动开发服务器 并调用服务/servlet),我得到以下异常 例外情况:Java 初始化本地数据存储异常:没有为此线程注册API环境,java,google-app-engine,gwt,google-cloud-datastore,Java,Google App Engine,Gwt,Google Cloud Datastore,我想使用 常规Java程序(我不想启动开发服务器 并调用服务/servlet),我得到以下异常 例外情况: } 问候…..impl.java } 有办法做到这一点吗?如何操作?谷歌提供了一个助手类,它可以完全满足您的需要——运行足够的代码来处理数据库,而无需启动整个开发服务器。请参见上的设置和拆卸方法,只需将这3个库(测试库的附件)添加到类路径中即可: private final LocalServiceTestHelper helper = new LocalServiceTest
}
问候…..impl.java
}
有办法做到这一点吗?如何操作?谷歌提供了一个助手类,它可以完全满足您的需要——运行足够的代码来处理数据库,而无需启动整个开发服务器。请参见上的
设置
和拆卸
方法,只需将这3个库(测试库的附件)添加到类路径中即可:
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
@Before
public void setUp() {
helper.setUp();
}
@After
public void tearDown() {
helper.tearDown();
}
这应该可以解决问题。您必须为当前线程设置测试数据存储服务。基本上你可以这样做: 这将仅为此方法初始化数据库服务(一个假的,仅用于测试) 或者你可以做得更好: 所以数据库服务将在所有测试方法中工作 请注意,如果您使用不同的线程访问数据库,那么您将为每个线程获得一个单独的数据库。这可能不是你最想要的。我的意思是
helper.setUp()
为当前线程设置一个新的独立数据库服务,并且存储在此数据库中的所有数据将只能从当前线程访问
有关更多详细信息,请参阅:我在运行TimerTask any ideas时遇到相同错误。请注意,我没有使用GAEwell的cron配置。。我不确定这是否有用。我已经在这上面停留了一段时间,helper类似乎创建了一个假的/新的数据库。因此,我无法找到读取本地数据库中已有数据的方法。我可以通过本地访问数据存储吗 public class TestCase { static GreetingServiceImpl greetingServiceImpl = new GreetingServiceImpl();
public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService {public static void main(String[] args) { testServerCallBack();//line9 } private static void testServerCallBack() { Contacts contacts = new Contacts("this is", "awesome"); greetingServiceImpl.saveContact(contacts);//line:14 }
public String greetServer(String input) throws IllegalArgumentException { return ""; } @Override public void saveContact(Contacts contacts) { PersistenceManager pm = PMF.get().getPersistenceManager(); pm.makePersistent(contacts); //line:20 pm.close(); }
${SDK_ROOT}/lib/impl/appengine-api.jar ${SDK_ROOT}/lib/impl/appengine-api-labs.jar ${SDK_ROOT}/lib/impl/appengine-api-stubs.jar
private static void testServerCallBack() { LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); helper.setUp(); Contacts contacts = new Contacts("this is", "awesome"); greetingServiceImpl.saveContact(contacts);//line:14 }
private final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); @Before public void setUp() { helper.setUp(); } @After public void tearDown() { helper.tearDown(); }