Springboot上的Google远程API 404

时间:2017-07-01 20:17:56

标签: spring google-app-engine spring-boot google-cloud-datastore objectify

我正在尝试连接部署到我的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;
    }

}

1 个答案:

答案 0 :(得分:0)

我从根本上误解了remote-api是如何工作的,并没有意识到我需要在app引擎中运行的应用程序将请求代理到Google DataStore上。我仍然感到困惑的是,从Java访问DataStore没有简单的方法,但这种方法至少有效!