0

Tapestry5で記述されたページをApacheTomcat上のTapestry4で記述されたWebアプリケーションに追加しようとしています。$ tomcat / shared/libに必要なjarファイルがあると仮定します。

テストする基本的なフォームテンプレートと対応するJavaクラスを作成し、ここの例に従って、既存のhtmlファイルを新しいものに置き換えましたが、ページ仕様(.page)ファイルが原因でDocumentParseExceptionが発生します。 tomcatを介してページにアクセスしようとすると、「予期しないパブリックID'-// Apache Software Foundation // Tapestry Specification 5.3 //EN'」になります。ページ仕様ファイルのその行を「TapestrySpecification4.0// EN」に戻すと、JavaクラスにIPageインターフェースを実装する必要があるという別の例外が発生します。

タペストリーを含むプロジェクトに取り組むのはこれが初めてであり、この問題に固有のオンラインで何も見つからなかったので、助けていただければ幸いです。

4

2 に答える 2

1

私はレガシーアプリケーションに対してこれを行いましたが、すべてのサービスが移行されて最初のページが実行されるまでに約3か月かかりました。概要は次のとおりです。さまざまな理由でコードを投稿できません。

  1. タペストリー4.1.6にアップデートします。(そうでない場合は、長くて苦痛になる可能性があります)。
  2. tapestry4サーブレットのurl-patternが/t4/ *のようなものであり、t5の無視されたパスに/t4/.*が含まれていることを確認してください。
  3. t4リクエストのt5リクエストグローバルを初期化します。(t4サーブレットをサブクラス化し、doServiceメソッドをオーバーライドします)。
  4. t5リクエストのhivemindおよびt4リクエストグローバルを初期化します。(「after:StoreIntoGlobals」と「before:EndOfRequest」の間のt5モジュールでHttpServletRequestFilterを提供します)。
  5. t5サービスのhivemind用のObjectProviderを作成します。
  6. 可能なすべてのサービスをt5iocに移行します。(hivemindサービスを直接使用できないため、注意が必要な場合がありますが、バックグラウンドでhivemindレジストリを使用できます)。
  7. (オプション)同じ名前のtapestry4またはtapestry5ページへのリンクを自動的に提供し、アクティベーションコンテキストを処理するtapestry4およびt5のリンクコンポーネントを作成します。t5リンクにはPageRenderLinkSourceを使用し、t4には外部サービスを使用できます。
  8. 状態のあるすべてのサービスに対して、hivemindのラッパーを作成します。

コードベースが大きくないか、非常に複雑でない場合は、間違いなく私見の価値はありません。

于 2013-02-05T19:30:48.630 に答える
0

Tapestry4とTapestry5を並べて実行できます(パッケージ名はこの理由だけで異なります)...しかし、それらはお互いに何も知らず、直接対話することはできません。これは、複数のサーブレットを使用して単一のWARを作成する方法とまったく同じです。さまざまなアプリケーションは、URLまたはHttpSessionの共有状態を介してのみ通信できます。

于 2013-05-31T18:38:36.570 に答える