【发布时间】:2017-12-05 12:17:35
【问题描述】:
当部署到我的 Google DataStore 时,我正在尝试连接在本地/不在 Google 应用引擎中运行的 Spring Boot 应用。我正在使用 Objectify 和 Google Remote API,因为我的理解是 Objectify 仅在部署在 App 引擎(?)中才能工作。问题是当我尝试与 DataStore 通信时,Google Remote API 抛出 404。我想我可能在 Spring Boot 中的配置有误,因为 google docs 上的说明谈到在 web.xml 中设置配置,我不在基于 JAR 的 Spring Boot 应用程序上使用它。我创建了一个 SpringBootServletInitializer 类来尝试注册 servlet(代码在底部)。我是从 AWS 的角度来看的,到目前为止,我发现 Google 云是一场噩梦!连接到 DynamoDB 简单多了,我觉得我一定是遗漏了什么!
import com.google.apphosting.utils.remoteapi.RemoteApiServlet;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Thomas on 01/07/2017.
*/
@Configuration
public class GoogleRemoteApiConfig extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(GoogleRemoteApiConfig.class, "/remote_api");
}
@Bean
public ServletRegistrationBean remoteApiRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new RemoteApiServlet(), "/remote_api");
Map<String,String> params = new HashMap<String,String>();
registration.setInitParameters(params);
registration.setLoadOnStartup(1);
registration.setUrlMappings(Arrays.asList("/remote_api"));
registration.setName("RemoteApiServlet");
return registration;
}
}
【问题讨论】:
-
看起来您正在使用 GAE 灵活。您可能需要检查github.com/objectify/objectify/wiki/…。你试过github.com/objectify/objectify/wiki/Setup#guice-alternative吗?
标签: spring google-app-engine spring-boot google-cloud-datastore objectify