-3

今日のツイートで、「WebLogic、WebSphere、および JBoss Application Servers でお金を浪費するのをやめよう」という記事に出会いました。

で始まる記事

企業が Oracle Weblogic や IBM WebSphere Application Server などの Java アプリケーション サーバーに何百万ドルも費やす理由がわかりません。企業が Red Hat JBoss に投資する理由は理解できます。企業はアプリケーション サーバーへの投資を減らしたいと考えています。しかし、なぜ何かを費やすのですか?Apache Tomcat は、ほとんどの Java Web アプリケーションのデプロイメント要件を満たします。

そして、いくつかの理由を挙げ続けます:

  • EJB をサポートするアプリケーション コンテナーが必要です。
  • 最適化されたアプリケーション サーバーがハードウェアを最適化
  • 2 フェーズ コミットは深刻です
  • 管理性
  • クラスタリングは、スケーラビリティ、パフォーマンス、および可用性をサポートします

私は Tomcat が大好きで開発も行っているので、これらがすべて本当なら嬉しいです。ただし、他のアプリケーション サーバーがまったく必要ないという説得力のある理由はあまり見当たりません。

ですから、私の質問は次のとおりです。どのような状況で、 Weblogic/Websphere/JBoss のような(いわゆる)高度なサーバーが必要だと思いますか? Websphere/Weblogic/JBoss のビジネス ケースはあるのでしょうか、それとも Tomcat はほぼ常にそうすべきでしょうか?

Tomcat が提供できない/提供できない重要なものはありますか?

4

3 に答える 3

4

記事は実際には正しくありません。

Glassfish、Resin、Jboss AS、TomEE などはすべてオープンソースで無料です。それらを使用するために誰かに食事を支払う必要はありません。

EJB に関する部分は特にナンセンスです。もう2004年じゃない!最近の EJB は非常に単純で軽量なpojoです。重い XML や侵襲的なフレームワークの継承は必要ありません。それらはとりわけ、JPA での作業を大幅に簡素化し、単純な非同期メソッドを簡単にします。

「十分なTomcat」の大きな誤りは、実際には裸のTomcatでは決して十分ではないということです。Tomcat だけで実行される重要なアプリケーションは 1 つもありません。ささいなアプリケーションでさえ、これには苦労します。代わりに、人々は膨大な量のライブラリを追加しています。通常、少なくとも JSF、Spring、Javamail、いくつかの JTA impl. そして休止状態。これは数十個の jar に相当し、ユーザーはそれらがすべて連携して動作していることを確認し、しばらくしてからすべてがまだ必要かどうかを確認する必要があります。

Java EE の実装により、必要なものがすべて 1 つのパッケージにまとめられます。すべての依存関係は既に解決されており、全体として連携することが保証されています。

誰かが機能を利用できるようにすることを本当に心配しているが、それを使用していない場合; Java EE Web プロファイルがあります。これは、ほとんどの Web アプリケーションが使用する機能 (jsf、cdi、ejb (lite)、jpa、jta、および javamail) を含む完全な Java EE プロファイルのサブセットです。

Web プロファイルの実装は非常に小さい場合があります。たとえば、Tomcat の 7 または 8 MB と比較して、Resin は 20 MB 程度です。それでも、Resin はフル スタック ソリューションですが、Tomcat は最低限のサーブレット コンテナーであり、前述のように大量の追加ライブラリが必要です。Web Profile 実装の起動時間はわずか数秒です (Glassfish v3 および JBoss AS 7 は 2 ~ 3 秒で起動します)。

于 2011-08-27T18:53:28.793 に答える
3

すでに提供されたすべての有用な情報とは別に、多くの顧客が、追加のサポートを提供するベンダーに追加の現金を支払うことを厭わないと言いたいです。IBM Websphere サポートを見てください。重要なビジネス アプリケーションを維持するのに非常に役立つと思います。

于 2011-08-27T17:14:35.373 に答える
2

アプリケーションのニーズによって異なります。Tomcat はほとんどが単なるサーブレット コンテナですが、JBoss、Websphere などは完全な Java EE サポートを提供します (通常、Java EE 仕様を超えた追加のプラットフォーム固有の機能に加えて)。

多くのアプリケーションでは、サーブレット コンテナで十分です。特に、Web アプリケーションの一部として適切なライブラリをバンドルするだけで、多くの Java EE のような機能を取得できるためです。しかし、場合によっては、本格的なアプリケーション サーバーの 1 つでしかすぐに利用できないこの機能またはその機能が必要になることがあります。

とはいえ、本当に必要なのはサーブレット コンテナーだけなのに、完全な Java EE サーバーを使用するのはかなりばかげていると思います。原則として、私は常に Tomcat から始めます。Tomcat では提供できない機能が必要であると判断した場合にのみ、JBoss などに切り替えます (頻繁に発生するわけではありません)。

Tomcat で実行される Web アプリケーションを JBoss で実行するのは非常に簡単なことです。そのため、より複雑なプラットフォームに直接ジャンプする理由はなく、ゲームの後半でそうすることにした場合でも実際のペナルティはありません。

ブログ記事で提起された特定のポイントについて:

EJB をサポートするアプリケーション コンテナが必要です

彼は正しい、あなたはこれを必要としません。EJB と同じ種類の機能を提供する Spring のような一般的なフレームワークがあります。両方を同時に使用することは通常ありません。

最適化されたアプリケーション サーバーがハードウェアを最適化

コメント無し。個人的には、ウェブアプリが大量のマルチメディア処理や同様のタスクを実行していない限り、最新のハードウェアは、特別な最適化がなくても、アプリが何であれ実行するのに十分な速度になっていると思います. そのため、仮想化は非常に重要です。単一のサーバーは現在、単一のサイトだけに専念するには強力すぎるため、それぞれが独自のサイトを実行する複数の仮想サーバーに分割します。

2 フェーズ コミットは深刻です

繰り返しますが、私はブログの投稿に同意しません。2 フェーズ コミット、たまたま必要でない限り、深刻ではありません。そして、私は一度もそれを必要としたことはありません。私がこれまで携わってきたすべてのプロジェクトでは、楽観的なトランザクションとロールバックを備えたデータベースで十分でした。

管理性

開発者としての私の経験では、JBoss は Tomcat よりもはるかに「扱いにくい」ものです。構成がとてつもなく難しいだけです。確かに、この記事で言及されているのと同じ種類の管理機能ではありませんが、それでも注目に値するものです。それ以外に、Java EE コンテナには通常、サーバー管理に関連する組み込み機能がはるかに多くありますが、Tomcat (またはその他の種類のサーバー) から同様の機能を引き出すために使用できるサードパーティ ツールも多数あります。

クラスタリングは、スケーラビリティ、パフォーマンス、および可用性をサポートします

Tomcat はクラスタリングをサポートし、他のプラットフォームよりもスケーラブルです。実際、JBoss は Tomcat の上で実行されるため、Tomcat には本質的にスケーリングを妨げたり、エンタープライズ レベルのプラットフォームとしての使用に適さないようにするものは何もないことは明らかです。

于 2011-08-27T14:42:58.417 に答える