6

私たちは、Tapestry 4.1 で書かれた大規模で扱いにくいが、かなり安定した Web アプリケーションを持っています。そのために、代わりに Grails でいくつかの新しい機能を開発することを検討しています。私たちの顧客は決して違いを知ってはいけません。また、可能であれば、インストール サービスなどの内部の誰も気にする必要はありません。理想的には、Grails アプリは既存の Tapestry コードと同じ WAR にありGrailsDispatcherServlet、より具体的なパス。既存のアプリケーションのモンスター ビルド プロセスに最小限の変更があることも重要です。Gant と Ivy でビルド システム (現在は Ant、Maven に移行) をやり直すことはできません。また、開発中のライブ リロード用に展開された WAR を使用できるとよいでしょう。

質問、次に:

  • これは可能ですか?
  • もしそうなら、どこから始めればよいですか?
  • そうでない場合、次善のアプローチは何ですか?
  • 何に注意する必要がありますか?

ところで、ここでは GORM を使用しないことに注意してください。すべてのデータは、Java ドメインとメッセージング層が既にある Web サービスから取得されます。

4

2 に答える 2

2

朗報: はい、可能です。

悪いニュース: 少し毛むくじゃらです。

少なくとも 2 つの方法があります。

  1. Dylan が提案したように、Grails ビルドを変更して、既存のアプリケーションに対応するように微調整します。
  2. 既存の WAR ファイルを Grails によって生成された WAR ファイルと結合する別の Ant ターゲットを作成します。

最初のオプションは、Grails ビルドを変更することです。リスクは、Grails がバージョンを更新するときに、カスタマイズおよび微調整された Grails ビルドがまったく失敗する可能性があることです。これを修正するには、フレームワークがビルドを生成する方法に関する深い知識が必要です。これは新しいフレームワークとの最初の出会いであるため、学習曲線が急勾配になる可能性があります。

Grails ビルドを台無しにする必要がないため、2 番目の方法をお勧めします。基礎となる、web.xml 構成がどのように機能するかを知る必要があります。独自の Ant ビルドも既に持っているため、この知識は既にあると思います。おそらくこれが最も抵抗の少ない道です。

2 番目のアプローチの欠点は、開発中に WAR を爆発させることが難しいことです。しかし、開発中に一緒にテストする必要なく、古いアプリケーションと新しいアプリケーションを分離できれば、軽量の開発サーバーを使用して Grails で開発を行うときに楽しい時間を過ごすことができます。

次のステップでは、Grails によって呼び出される Java コンポーネントとして、Grails の下で古いアプリケーションを少しずつ実行できるようにします。

于 2012-05-16T06:24:01.907 に答える
1

grails install-templates コマンドを実行して、web.xml のテンプレートを編集し、サーブレットのマッピングを変更できます。

Ant と Maven (または Gradle) を使用して Grails アプリを作成できますが、これは「標準的な」方法ではないため、私の経験では、微調整が必​​要になる場合があります。Ant 統合 (依存関係に ivy を使用) を使用してビルドし、Gradle を使用して Ant をラップし、特別な要件に合わせてビルドを変更しました。

遭遇する可能性のある問題は、Gant スクリプトが Grails のコアであり、これらのスクリプトで (使用するプラグインに応じて) 多くのことが発生し、2 つのビルドをマージしようとすると問題が発生する可能性があることです。ケースを念頭に置いてください。

于 2012-05-15T03:33:20.117 に答える