7

我对 Google App Engine (GAE) 和 Glassware 开发(针对 Google Glass)非常陌生。

我在上面配置了 mirror-quickstart-java项目,Netbeans并且Apache tomcat我成功地运行了该项目,但我遇到了麻烦。

我的要求是,我不想使用谷歌应用引擎来开发我自己的 Glassware,因为我想使用很少的第三方 API。此外,应用程序引擎不支持javax.imageioBufferedImageapi。

我有以下问题

  1. 是否必须使用 Googleapp-engine进行 mirror-quickstart-java/Glassware 开发?
  2. 如果不是,我在交换访问令牌时的“允许访问”步骤后收到以下错误。
message The API package 'urlfetch' or call 'Fetch()' was not found.

description The server encountered an internal error that prevented it from fulfilling this request.

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'urlfetch' or call 'Fetch()' was not found.
    com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:100)
    com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:38)
    com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:75)
    com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980)
    com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:299)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:175)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:78)
    com.google.glassware.AuthServlet.doGet(AuthServlet.java:56)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
4

2 回答 2

5

将快速启动项目从 App Engine 移至另一个 J2EE 容器非常简单,但确实需要更改一些代码:

  1. 将 的实例替换UrlFetchTransportNetHttpTransport. 这将影响AuthUtil.javaMirrorClient.java
  2. 替换为适用于您喜欢的任何持久层(Hibernate、SQLite 等)ListableAppEngineCredentialStore.java的新实现。CredentialStore

您还需要对依赖项管理和构建脚本进行一些更改,但您只能靠自己,因为这在很大程度上取决于您计划如何运行它。

于 2013-05-30T17:15:38.980 回答
1

您的 Glassware 不需要使用 appengine。唯一的要求是订阅回复将使用 HTTPS 发送给您,因此您需要确保您的服务器已正确配置以处理此问题。

urlfetch 包是特定于 appengine 的。您应该确保从您的项目中删除 appengine 库,并且重新编写任何引用它的代码以使用标准 java.net 库。由于这是身份验证的一部分,您可能需要使用其他 OAuth2 方法,例如Google+ Sign-In

于 2013-05-30T11:57:52.267 回答