Je voulais importer les données d'environnement de production localement avec GAE / J, j'ai donc essayé d'utiliser l'API Remote. Cette section décrit comment acquérir des données par accès à distance depuis GAE dans l'environnement local vers la production et enregistrer les données acquises dans la banque de données locale.
Il est implémenté dans les versions suivantes.
Ajoutez ce qui suit au projet web.xml.
web.xml
<servlet>
<display-name>Remote API Servlet</display-name>
<servlet-name>RemoteApiServlet</servlet-name>
<servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RemoteApiServlet</servlet-name>
<url-pattern>/remote_api</url-pattern>
</servlet-mapping>
Pour utiliser le composant client de l'API distante, ajoutez $ {JAVA-SDK-ROOT} / lib / appengine-remote-api.jar
au répertoire WEB-INF / lib
et passez-le par le chemin de la classe.
Importez localement les données du nom de genre "livre".
import com.google.appengine.tools.remoteapi.RemoteApiInstaller;
import com.google.appengine.tools.remoteapi.RemoteApiOptions;
// ...
RemoteApiOptions options = new RemoteApiOptions()
.server("your_app_id.appspot.com", 443)
.useApplicationDefaultCredential();
RemoteApiInstaller installer = new RemoteApiInstaller();
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
List<Entity> books;
try {
installer.install(options);
Query q = new Query("book");
books = datastore.prepare(q).asList(FetchOptions.Builder.withDefaults());
} finally {
installer.uninstall();
}
//Migrer les données pour le stockage local
List<Entity> devBooks = new ArrayList<>();
for (Entity book : books) {
Entity devBook = new Entity(book.getKind(), book.getKey().getName());
devBook.setPropertiesFrom(book);
devBooks.add(devBook);
}
datastore.put(devBooks);
Cela ne fonctionnait pas si je datastore.put ()
les données que j'ai obtenues de la production, mais j'ai pu les obtenir localement en utilisant la méthode ci-dessus.
Recommended Posts