問題タブ [deployment-descriptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-mvc - context:property-placeholder が使用できるように、Spring アプリケーションコンテキストで OpenSessionInViewFilter を構成することは可能ですか?
初期状況
私の Web アプリケーションは、Maven モジュールmyapp-persistence (.jar)、myapp-model (.jar)、myapp-service (.jar)、およびmyapp-web (.war) で構成され、従来の疎結合の多層構造を取得します。建築。すべてのモジュールは、すべてのサブモジュールの一般的な定義を持つ親POMのみを含む親 Maven モジュールによって結合されます。
特にmyapp-service (.jar) とmyapp-persistence (.jar) は、必要なオブジェクトを含む独自の構成可能な (!) アプリケーション コンテキスト パーツを保持します。両方の jar は、含まれている変数定義を使用してデプロイ可能である必要があります。つまり、jar に変数の具体的な値が含まれていてはなりません。
myapp-service-context.xmlは、サーバー URL の変数を使用してsolrServer Bean を宣言します。
myapp-persistence-context.xmlは、接続変数を使用してdataSourceを定義します。
myapp-web (.war) はmyapp-service (.jar) とmyapp-persistence (.jar) を参照します。myapp-servlet.xmlには、それらのアプリケーション コンテキスト パーツが含まれ、プロパティ ファイルによって宣言された Bean の構成用のプロパティ値が提供されます。context:property-placeholderにより、Spring はメモリ内にアプリケーション コンテキストを作成するときに、すべての変数を具体的な値で初期化します。
開発プロファイルの場合、具体的なmyapp-configuration.propertiesは次のようになります。
この構成は簡単で、ビューなしで機能します。org.springframework.orm.hibernate3.support.OpenSessionInViewFilterが登場すると問題が発生します。
問題の説明
OpenSessionInViewFilterは、ビューがこれらのオブジェクトのコンテンツを表示しようとする場合に、コントローラの処理中に開いているトランザクション内にロードされないオブジェクト グラフのインスタンスを遅延ロードできるようにします ( [1]を参照)。よく説明されるように、このフィルターは、展開記述子web.xmlで宣言されます ( [2]を参照)。
上記のようにmyapp-persistence-context.xmlがmyapp-servlet.xmlに含まれてcontext:property-placeholderが機能する場合、OpenSessionInViewFilterは必要なsessionFactoryを見つけられません。その理由は、Spring が最初にweb.xmlを処理し、次にmyapp -persistence-context.xmlをインポートするmyapp -servlet.xmlを処理するためと思われます。残念ながら、この推測を参照によって証明することはできません。次の例外がスローされます。
通常、異なるアプリケーション コンテキスト パーツは、myapp-servlet.xmlではなくContextLoaderListenerを使用してデプロイメント記述子に含まれます。
残念ながら、この構成では、Spring のcontext:property-placeholderメカニズムが機能しなくなったようです。
目的と疑問
myapp-persistence (.jar) やmyapp-service (.jar) などのモジュールは、 myapp-web (.war)のアプリケーション コンテキストなど、参照コンテキストによってプロパティ ファイルを使用して実行時に構成可能である必要があります。
問題は、Spring アプリケーション コンテキストでOpenSessionInViewFilterを構成してcontext:property-placeholderを引き続き使用できるようにすることは可能ですか?
または、代わりに: アプリケーション コンテキスト パーツがデプロイメント記述子web.xmlに含まれている場合、実行時にアプリケーション コンテキストの変数を Spring によってどのように初期化できますか?
基本的に: 実際にOpenSessionInViewFilterを構成する必要があるのはなぜですか? Spring MVC がデフォルトでビューの遅延読み込みを透過的にサポートしていないのはなぜですか?
予想発言
コンパイル時のプロパティの置換は、ここでは重要ではありません。プロファイル依存プロパティ ファイルは、Maven フィルタリングで既に作成されています。
myapp - persistence ( .jar )とmyapp - service ( _ _ _ _ .jar) - 実際には依存性注入の精神です!
java - デプロイメント記述子が見つかりません
初めての Java Web アプリケーションの開発に NetBeans 8.0 を使用していますが、プロジェクト フォルダに配置記述子が見つかりません。どこにあるのかわかりません。
Webで検索したらWEB-INFフォルダにあると書いてありましたが、私のWEB-INFフォルダは空です。
struts2 - struts.xml で定数を使用せずに URL から .action を削除する方法
Struts 2 コンベンション プラグインを使用しています。アプリケーションで XML ベースの構成を使用したくありません。.action
では、この場合、 inを使用せずに URL から拡張子を削除する方法<constant name="struts.action.extension" value="" />
はstruts.xml
? 現在、拡張子struts.xml
を削除するためだけにファイルを使用しています.action
。.action
拡張子を削除する注釈はありますか?
java - 「ログインしていない」ユーザーを特定して、ログイン ページに戻すにはどうすればよいですか?
JSP、サーブレット、および JDBC (フレームワークなし) を使用して Web アプリケーションを作成しました。ユーザーが最初にログインする必要があるフォームベースの認証セキュリティがあります。ユーザー名とパスワードはデータベースにあり、他のインターネット ベースの Web アプリケーションと同様に、ユーザー名とパスワードはユーザー自身が作成します。
Java Sessions
ユーザーを識別し、その人がログインしているかどうかを調べるために使用しました。私たちが行っていることは、すべてのサーブレット ページと JSP ページで、セッションが新しいかどうか、およびセッションが利用可能かどうかを確認し、問題がある場合はユーザーをログイン ページに戻します。これにより、URL の like に直接アクセスするユーザーが保護されますwww.xxx.com/questions?idEmployee=1
。
今問題が来ます。ユーザーがログインしているかどうかを確認するために、すべてのページに Java コードを記述する必要がないことはわかっています。デプロイメント記述子でできることはありますか? そのため、自動的に物事をチェックしてユーザーを転送できます。
ただし、Google で見つけた回答はすべて、ユーザー名とパスワードを配置記述子にハードコーディングすることに関するものであるため、私たちにとっては役に立ちません。では、ユーザー名とパスワードをデプロイメント記述子にハードコーディングせずに、この問題を解決するにはどうすればよいでしょうか?
java-ee-6 - EJB デプロイメント記述子の優先順位
このリンクによると、EJB が REST Web サービスとして公開されているために WAR にパッケージ化されている場合、WEB-INF ディレクトリのルートに ejb-*.xml ファイルが必要です。私の現在の環境は、Websphere 8.5 と EJB 3.1 です。
後で同じアプリケーションに (別々の EJB プロジェクトに) 複数の EJB を追加し、それぞれのプロジェクトでそのデプロイメント記述子を定義すると、それらは無視されるようです。すべての記述子を WEB-INF ディレクトリの記述子で定義する必要があるようです。つまり、別のプロジェクトとして定義されている EJB に対しても、WEB-INF ディレクトリの記述子を拡張する必要があるようです。
これが必要な方法ですか、それとも私にこれを強制する何かが欠けていますか? この部分を説明するドキュメントは見つかりませんでした。
詳細: これは私の application.xml がどのように見えるかです
ejb1 は、webapp に存在するものです。他の 2 つ、ejb2 と ejb3 は、EAR のルートにあるはずの個別の ejb プロジェクトです。
image - alternatedocroot の URI のサーブレット フィルター
代替ドキュメントルート経由で配信されるコンテンツに ServletFilters を適用することは可能ですか?
フィルター マッピング
代替 Docroot
問題文:
静的コンテンツ (特に画像) を提供する前に、何らかの認証を行います。画像を提供しているため、データベースを使用することも、画像を .war ファイルに保持することもできません