App Engine は最近ソケットを有効にし、Google は Compute Engine をすべての人に開放したため、SPDY を使用して App Engine アプリをバックエンドの Compute Engine サーバーに接続できるようになりました。
ただし、 Square の okhttpなどの一般的な Java SPDY クライアントは、 Google JRE ホワイトリストにないjava.util.concurrent
クラスをConnectionPool
使用するため、SPDY ライブラリのサポートにはまだ問題がある可能性があります。
Google 社員が推奨する、または App Engine で動作することが知られている Java 用の SPDY クライアント ライブラリはありますか?
更新:私は間違っていました-java.util.concurrent
クラスはGoogle JREホワイトリストに載っています。
ホワイトリストのページで「同時」を検索したところ、java.util.ConcurrentModificationException
...
java.util.Collection
java.util.Collections
java.util.Comparator
java.util.ConcurrentModificationException
java.util.Currency
java.util.Date
java.util.Deque
java.util.concurrent
...そして、ページのさらに下にたくさんのクラスがあることに気づきませんでした。
それを指摘してくれた@jesse-wilsonに感謝します:
https://github.com/square/okhttp/issues/195
Jesse はまた、App Engine チームの I/O の誰かと App Engine での実行について話したばかりだとOkHttp
言い、App Engine 担当者は次のように言いました。
より大きな問題は、OkHttp が JVM で実行するために bootclasspath にいくつかの特別な SSL クラスを必要とすることです。App Engineでそれを取得することは決してないので(危険すぎます)、App EngineのSPDYはどのライブラリの非スターターにもなりません.
さらに、Jesse は、SPDY クライアントはOkHttp
変更される内部 API であるため、スタンドアロン クライアントとして使用することを意図していないと述べました。
ただし、これはバックエンド RPC の SPDY であるため、GAE での SSL の問題に対処するには、SSL を無効にして未加工の SPDY フレームを Compute Engine サーバーに渡す必要があります。これは、Compute Engine がサーバー間の通信を自動的に暗号化するためです。
Ilya Grigorik ( @igrigorik ) は、SPDY の AirBnB TechTalk で SSL の無効化について説明しています。最後に彼は、Thrift などの代わりに最新のバックエンド RPC に SPDY を使用することを主張しています。
「最新の Web スタックの構築」
- ビデオ: https://www.youtube.com/watch?v=ZxfEcqJ4MOM
- スライド: http://www.igvita.com/slides/2012/http2-for-fun-and-profit.pdf
- ブログ: http://www.igvita.com/2012/01/18/building-a-modern-web-stack-for-the-realtime-web/
そのため、私はまだ App Engine で動作する Java SPDY クライアントを探しています。ビルドから SSL クラスを除外することで動作させることができない限り、フォークしてすべての SSL を取り除くことを意味する場合があります。
優れた Java SPDY クライアントへのポインターは大歓迎です。
更新 2 : SPDY 開発者リストのメンバーは、Jetty と Netty がスタンドアロンの SPDY クライアント ライブラリを持っていると述べました。
Jetty SPDY クライアント:
- http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-spdy
- http://wiki.eclipse.org/Jetty/Feature/SPDY
;; Clojure dependencies
[org.eclipse.jetty.spdy/spdy-core "9.0.3.v20130506"]
[org.eclipse.jetty.spdy/spdy-client "9.0.3.v20130506"]
Netty SPDY クライアント:
- http://netty.io/wiki/new-and-noteworthy.html (コーデック http)
- https://github.com/netty/netty/tree/master/codec-http/src/main/java/io/netty/handler/codec/spdy
;; Clojure dependency
[io.netty/netty-codec-http "4.0.0.CR3"]
Netty に基づいた Twitter の Finagle SPDY クライアントもあります。
Finagle の SPDY クライアント:
- http://twitter.github.io/finagle/guide/index.html
- https://github.com/twitter/finagle/tree/master/finagle-spdy
;; Clojure dependency
;; [com.twitter/finagle-spdy "6.4.0"]
Jetty の SPDY クライアントでは、SSL または平文で実行できるため、App Engine の SSL 制限を回避できる可能性があります。また、Jetty は App Engine がサーブレット コンテナに使用するものであるため、これは公式に祝福または適応される可能性があります。
App Engine イシュー トラッカーに機能リクエストを追加しました...
「Compute Engine サーバーに接続するための SDK に SPDY クライアントを追加する」 https://code.google.com/p/googleappengine/issues/detail?id=9398