来自 servlet 的 RemoteApi 调用未加载到本地应用引擎应用程序中
RemoteApi calls from servlet not loading in local app engine app
我正在尝试这个例子https://cloud.google.com/appengine/docs/java/tools/remoteapi
如果我 运行 脚本作为 java 应用程序一切正常,但是当我作为 servlet 执行它时它总是永远加载并且不会抛出任何错误。在本地主机上也能正常工作。我还注意到在进行查询时会发生这种情况,当我将其注释掉时 (datastore.put),servlet 会立即加载。
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.tools.remoteapi.RemoteApiInstaller;
import com.google.appengine.tools.remoteapi.RemoteApiOptions;
@SuppressWarnings("serial")
public class Gae_java_Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
RemoteApiOptions options = new RemoteApiOptions()
.server("java-dot-project.appspot.com", 443)
.useApplicationDefaultCredential();
RemoteApiInstaller installer = new RemoteApiInstaller();
installer.install(options);
try {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
System.out.println("Key of new entity is " +
datastore.put(new Entity("Hello Remote API!")));
} finally {
installer.uninstall();
}
}
}
我想通了,需要使用 RemoteApiOptions().useServiceAccountCredential("service email", "p12key") 而不是 useApplicationDefaultCredential()
我正在尝试这个例子https://cloud.google.com/appengine/docs/java/tools/remoteapi 如果我 运行 脚本作为 java 应用程序一切正常,但是当我作为 servlet 执行它时它总是永远加载并且不会抛出任何错误。在本地主机上也能正常工作。我还注意到在进行查询时会发生这种情况,当我将其注释掉时 (datastore.put),servlet 会立即加载。
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.tools.remoteapi.RemoteApiInstaller;
import com.google.appengine.tools.remoteapi.RemoteApiOptions;
@SuppressWarnings("serial")
public class Gae_java_Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
RemoteApiOptions options = new RemoteApiOptions()
.server("java-dot-project.appspot.com", 443)
.useApplicationDefaultCredential();
RemoteApiInstaller installer = new RemoteApiInstaller();
installer.install(options);
try {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
System.out.println("Key of new entity is " +
datastore.put(new Entity("Hello Remote API!")));
} finally {
installer.uninstall();
}
}
}
我想通了,需要使用 RemoteApiOptions().useServiceAccountCredential("service email", "p12key") 而不是 useApplicationDefaultCredential()