Google Remote API 404 on Springboot



当部署到我的谷歌数据存储时,我正在尝试连接在本地/不在谷歌应用引擎中运行的Spring Boot应用程序。我正在使用Objectify和Google Remote API,因为我的理解是Objectify只有在应用程序引擎中部署时才有效(?问题是,当我尝试与数据存储通信时,Google Remote API 会抛出 404。我想我在 Spring 启动中的配置可能是错误的,因为谷歌文档上的说明谈到了在 web 中设置配置.xml我没有在基于 JAR 的 Spring 启动应用程序上使用。我创建了一个 SpringBootServletInitializer 类来尝试注册 servlet(代码在底部(。我是从AWS的角度来看这个问题的,到目前为止,我发现谷歌云是一场噩梦!连接到 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;
}
}

我从根本上误解了远程 API 的工作原理,并且没有意识到我需要在应用程序引擎中运行一个应用程序来将请求代理到 Google DataStore。我仍然感到困惑的是,没有简单的方法可以从 Java 访问数据存储,但这种方法至少是有效的!

最新更新