web-dev-qa-db-ja.com

Jersey、Apache Wink、JBoss RESTEasyの選択方法は?

Apache Wink について聞いたばかりで、 Jersey または JBoss RESTEasy と比較してどのような違いがあるのか​​と思っていました。他の2人ができないことで、1つで何ができるでしょうか?

私たちはジャージーを社内プロジェクトのいくつかで主にシンプルさのために使用してきましたが、これらの他の2つが私が切り替えを検討するより良くなる理由を本当に理解することはできません。誰もこれらの各ニッチのニッチなユースケースを持っていますか?

75
Nick Klauer

JAX-RSの実装

ジャージー

  • 参照実装
  • 通常、最先端の
  • Atmosphere または2.0バージョンのいずれかを介した真の非同期(つまりWebソケットなど)接続をサポートします。
  • Springおよび標準のインジェクションコンテナ(@Inject)をサポートしています。
  • Glassfishがバンドルしています。
  • 他のJAX-RSプロジェクトよりもはるかにモジュール化されています。
  • それはキックのお尻を持っています RI Builder
  • 必ずしもサーブレットコンテナは必要ありません。
  • Grizzlyのサポート
  • Nettyサポート(非常に早い段階)。
  • Swaggerサポート
  • 欠落しているOAuth 2.0。他のライブラリを使用する必要があります。
  • Viewables を介したMVCサポート
  • Java.netでホストされています(サイトは時々非常に遅いため、マイナスです)。
  • ライセンスは、CCDL 1.1およびGPL-v2に基づいています。商用利用に使用する前に、ジャージーライセンスを確認してください。

https://jersey.github.io/license.html

ゆっくり休んで

Apacheウィンク (決して使用しなかった)

  • このプロジェクトが存在する理由はわかりません。
  • おそらくその高いパフォーマンスに焦点を当てた。
  • HttpUrlConnectionの上に構築されたクライアントがあります(マイナスです... Spring RestTemplate のようにプラグインできるはずです)。
  • 基本的に、Winkはいくつかの企業で社内で開発され、Apacheに渡されました。
  • サーブレットコンテナが必要です。

Restlet

  • 非常に強力だが非常に複雑
  • 低レベルのRESTサポートを提供します
  • サーブレットコンテナは不要

Apache CXF

  • いくつかの興味深いWADLサポート。
  • JAX-RS w/JAX-WSの再利用または結合
  • セキュリティサポート
  • 厄介ではあるが、Springとの統合
  • クライアントスタブの想定自動生成

その他のRPCのようなシステム

メッセージキュー

非同期RPC

私の謙虚な意見

OPがRESTを求めたが、これが内部通信用である場合は、従来のRESTの代わりにメッセージキューまたは他の非同期RPC(Finagle) =要件がそれらのシステムに一致する場合。

従来のHTTPである必要がある場合は、REST(外部)私はRestEasyまたはJerseyマインドシェアの大部分がこれら2つのプロジェクトに投入されます。

次も参照してください: Java用のレストクライアント?

113
Adam Gent

使用する実装を選択する際には、これを念頭に置いてください。JerseyWebサービスをJBOSS 7.1にデプロイしようとしても、機能しません。このエラーが発生します:

Only one JAX-RS Application Class allowed

これは、REST EasyがデフォルトのJAX-RS実装としてJBOSSにバンドルされているためです。したがって、JBOSSはそれが使用したい実装であると判断し、別のJAX-RS実装をロードしませんJersey)。これを修正するには、web.xmlファイルに次の行を追加する必要があります。

  <context-param>
   <param-name>resteasy.scan</param-name>
   <param-value>false</param-value>
  </context-param>
  <context-param> 
   <param-name>resteasy.scan.providers</param-name>
   <param-value>false</param-value>
  </context-param>
  <context-param>
   <param-name>resteasy.scan.resources</param-name>
   <param-value>false</param-value>
  </context-param>

リンク: https://community.jboss.org/message/7445

15

私のお気に入りの Jersey 拡張機能の1つはViewableです。 Viewableを使用すると、データをJSPページに簡単にバインドして、真のModel-View-Controller(MVC)アーキテクチャを実装できます。

5
bdoughan

JBoss 7.xを使用する場合、RestEasyを使用する必要があります。これはJBossに統合されているためです。 JBoss 7.xでJerseyを使用するには、RestEasyを無効にする必要があり、それは複雑です!

0
user1852036