当前位置: 首页 > 知识库问答 >
问题:

迁移到Google Cloud Endpoint Framework以Java

常小白
2023-03-14

我有一个现有的基于Gradle的多模块Google App Engine(GAE)项目,该项目最初基于https://github.com/GoogleCloudPlatform/appengine-modules-sample-java.

该项目有Cloud Endpoint for App Engine,我正在将其迁移到Cloud Endpoint Framework("云endpoint版本2")。我遵循了https://cloud.google.com/endpoints/docs/frameworks/java/required_files,这意味着我改变了这些:

建筑格拉德尔

+       compile 'com.google.endpoints:endpoints-framework-auth:1.0.0-beta.10'
+       compile 'com.google.endpoints:endpoints-management-control-appengine:1.0.0-beta.10'

appengine网站。xml

+       <env-variables>
+               <env-var name="ENDPOINTS_SERVICE_NAME" value="myproject.appspot.com" />
+       </env-variables>

网状物xml

+       <!-- Endpoints service config from service management -->
+       <filter>
+               <filter-name>endpoints-api-configuration</filter-name>
+               <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
+       </filter>
+       <filter-mapping>
+               <filter-name>endpoints-api-configuration</filter-name>
+               <servlet-name>api</servlet-name>
+       </filter-mapping>
+
+       <!-- Endpoints logging and monitoring -->
+       <filter>
+               <filter-name>endpoints-api-controller</filter-name>
+               <filter-class>com.google.api.control.extensions.appengine.GoogleAppEngineControlFilter</filter-class>
+               <init-param>
+                       <param-name>endpoints.projectId</param-name>
+                       <param-value>myproject</param-value>
+               </init-param>
+               <init-param>
+                       <param-name>endpoints.serviceName</param-name>
+                       <param-value>myproject.appspot.com</param-value>
+               </init-param>
+       </filter>
+       <filter-mapping>
+               <filter-name>endpoints-api-controller</filter-name>
+               <servlet-name>api</servlet-name>
+       </filter-mapping>

(我已经完成了https://cloud.google.com/appengine/docs/java/endpoints/migrating的部分,我不会在这里讨论)

但我在尝试使用“gradle appengineRun”运行它时遇到了这个错误:

    Oct 24, 2016 8:53:12 AM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
    INFO: Overwriting system property key 'java.util.logging.config.file', value '/Users/username/.gradle/appengine-sdk/appengine-java-sdk-1.9.42/config/sdk/logging.properties' with value 'WEB-INF/logging.properties' from '/Users/username/Documents/code/myproject/web/ear/build/exploded-app/default-1.0/WEB-INF/appengine-web.xml'
    Oct 24, 2016 8:53:12 AM com.google.appengine.tools.development.DevAppServerImpl <init>
    INFO: Ignoring application.xml context-root element, for details see https://developers.google.com/appengine/docs/java/modules/#config
    com.google.appengine.tools.development.EnvironmentVariableChecker$IncorrectEnvironmentVariableException: One or more environment variables have been configured in appengine-web.xml that have missing or different values in your local environment. We recommend you use system properties instead, but if you are interacting with legacy code that requires specific environment variables to have specific values, please set these environment variables in your environment before running.
    [Mismatch environmentVariableName=ENDPOINTS_SERVICE_NAME environmentVariableValue=null appEngineWebXmlValue=myproject.appspot.com appEngineWebXmlFile=/Users/username/Documents/code/myproject/web/ear/build/exploded-app/default-1.0/WEB-INF/appengine-web.xml]
            at com.google.appengine.tools.development.EnvironmentVariableChecker.check(EnvironmentVariableChecker.java:75)
            at com.google.appengine.tools.development.ApplicationConfigurationManager.checkEnvironmentVariables(ApplicationConfigurationManager.java:240)
            at com.google.appengine.tools.development.ApplicationConfigurationManager.access$000(ApplicationConfigurationManager.java:32)
            at com.google.appengine.tools.development.ApplicationConfigurationManager$EarModuleConfigurationHandle.checkEnvironmentVariables(ApplicationConfigurationManager.java:486)
            at com.google.appengine.tools.development.JettyContainerService.connectContainer(JettyContainerService.java:213)
            at com.google.appengine.tools.development.AbstractContainerService.createConnection(AbstractContainerService.java:269)
            at com.google.appengine.tools.development.AbstractInstanceHolder.createConnection(AbstractInstanceHolder.java:37)
            at com.google.appengine.tools.development.AbstractModule.createConnection(AbstractModule.java:73)
            at com.google.appengine.tools.development.Modules.createConnections(Modules.java:99)
            at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:239)
            at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:45)
            at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:217)
            at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:215)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:215)
            at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277)
            at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
            at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:225)
            at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:216)

我该怎么解决这个问题?

共有1个答案

訾凯歌
2023-03-14

我添加了一个环境变量:

key = ENDPOINTS_SERVICE_NAME 
value = myproject.appspot.com

(此处介绍如何添加环境变量)

以下是解释此标签含义的谷歌文档:

可选。appengine-web.xml文件可以定义应用程序运行时设置的环境变量。

为了避免与本地环境发生冲突,开发服务器不会基于此文件设置环境变量,并要求本地环境已将这些变量设置为匹配值。

 类似资料:
  • Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。

  • Redux 不是一个单一的框架,而是一系列的约定和一些让他们协同工作的函数。你的 Redux 项目的主体代码甚至不需要使用 Redux 的 API,大部分时间你其实是在编写函数。 这让到 Redux 的双向迁移都非常的容易。 我们可不想把你限制得死死的! 从 Flux 项目迁移 Reducer 抓住了 Flux Store 的本质,因此,将一个 Flux 项目逐步到 Redux 是可行的,无论你使

  • 我正试图迁移到AndroidX,我们在我们的项目中使用这个库。然而,这目前在我们的项目中引起了一个问题: 无法解析对“module @ build type/compile class path”的依赖项:无法使用转换JetifyTransform转换文件“localytics-1.3.0.aar”以匹配属性{artifactType=processed-aar} 删除库会使此问题消失。在这个库被

  • 如果你现在有一个正在使用其他 VCS 的代码库,但是你已经决定开始使用 Git,必须通过某种方式将你的项目迁移至 Git。 这一部分会介绍一些通用系统的导入器,然后演示如何开发你自己定制的导入器。 你将会学习如何从几个大型专业应用的 SCM 系统中导入数据,不仅因为它们是大多数想要转换的用户正在使用的系统,也因为获取针对它们的高质量工具很容易。 Subversion 如果你阅读过前面关于 git

  • 对于 iOS 自动化,Appium 依赖苹果提供的系统框架。对于 iOS 9.2 及更低版本,苹果唯一的自动化技术被称为UIAutomation,它运行在 “Instruments” 中。从 iOS 10 开始,苹果已经完全删除了 UIAutomation 工具,因此 Appium 不可能按照以前的方式进行测试。同时,苹果推出了一款名为 XCUITest 的新型自动化技术,从 iOS 9.3 到

  • 关于此文档 SQLAlchemy 2.0为核心组件和ORM组件中的各种关键SQLAlchemy使用模式带来了重大转变。这个版本的目标是对SQLAlchemy早期以来的一些最基本的假设做一点小小的调整,并提供一个新的简化的使用模型,这个模型希望在核心和ORM组件之间更加简洁和一致,并且更加有能力。Python从python3变成python3以及python3逐渐出现的类型系统是这种转变的最初启示,