我正在尝试连接部署到我的Google DataStore时在本地/不在Google应用引擎中运行的Spring Boot应用。我正在使用Objectify和Google Remote API,因为我的理解是Objectify只有部署在App引擎(?)中才能工作。问题是,当我尝试与DataStore通信时,Google Remote API正在抛出404。我认为我可能在Spring引导中配置错误,因为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;
}
}
答案 0 :(得分:0)
我从根本上误解了remote-api是如何工作的,并没有意识到我需要在app引擎中运行的应用程序将请求代理到Google DataStore上。我仍然感到困惑的是,从Java访问DataStore没有简单的方法,但这种方法至少有效!