4

私は Google Cloud Endpoints (Java) をいじっていましたが、App Engine にデプロイした後 (Eclipse + Google プラグインと Android Studio の両方を使用)、API を更新するのに問題があります。

Process というクラス (JPA でアノテーションを付けたもの) に基づいてエンドポイントを作成しました。それは私のパッケージにあります(たとえば、com.example)。初めてデプロイしたとき、誤って間違ったクラス (com.example.Process ではなく java.lang.Process) をインポートしてしまいました。そのため、API エクスプローラーでメソッドの 1 つをテストしたときに、次のエラーが発生しました。

com.google.api.server.spi.SystemService invokeServiceMethod: cause={0}
javax.persistence.PersistenceException: No meta data for java.lang.Process.  Perhaps you need to run the enhancer on this class?

その後、インポートを修正し、クライアント ライブラリを再生成し、アプリを App Engine に再デプロイしましたが、同じエラーが引き続き発生します。App Engine がまだ Process クラスの代わりに java.lang.Process を使用していると考えているかのように。

しかし、アプリエンジンはこれらの変更に気付いていないようです。

I read about how the API explorer "violently caches" so I tried clearing the cache, opened in another browser and even on another PC. Still nothing.

Also, I opened the discovery files for my api located in https://.appspot.com/_ah/api/discovery/v1/apis//v1/rest I noticed that the variables types I had changed are still listed as the old types.

I checked the logs for my deploys. They all look ok:

2013-07-06 18:59:59.960 /_ah/spi/BackendService.getApiConfigs 200 291ms 14kb
I 2013-07-06 18:59:59.706 com.google.api.server.spi.BackendService getApiConfigs: apiConfigDir=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF
I 2013-07-06 18:59:59.707 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/<my-api-name>-v1.api
I 2013-07-06 18:59:59.713 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/messageEndpoint-v1
I 2013-07-06 18:59:59.740 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/deviceinfoendpoint

and in Admin Logs:

2013-07-06 18:59:35 <me>    Successfully updated API configuration  version=1
2013-07-06 18:59:35 <me>    Completed update of a new default version   version=1.2013-07-06T21:59:30Z
2013-07-06 18:59:32 <me>    Deployed a new version  version=1.2013-07-06T21:59:30Z

Anyone has any idea? Thanks in advance.

4

1 に答える 1

1

.api ファイルが正しく再生成されていないようです。.api ファイルを削除すると、dev または App Engine へのロード時に再生成されますか?

更新された情報で .api ファイルが再作成される一般的な理由 (つまり、過去に犯した間違い):

  • プリミティブと列挙型は許可されていません。Bean を返す必要があります。
  • API メソッドには注釈が付けられていません
  • API メソッドは「パブリック」ではなく「プライベート」です
于 2016-07-13T03:24:27.097 に答える