問題タブ [propertynotfoundexception]
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.
jsf - WebSphere JSF プロパティが見つかりません (動作するものと同等のセットアップで)
アプリケーションの EAR があり、これを古いサーバー (Windows Server 2003 R2、32 ビット、WebSphere 8.0.0.4) にデプロイします。ここで、理論的に同等の WebSphere 8.0.0.4 インスタンスを別のマシン (Windows Server 2012 R2 標準、64 ビット) にセットアップしました。
私たちは myfaces/richfaces[1] で JSF 1.2 を使用しています (はい、わかっています、わかっています、それはレガシーです。今は変更できません)。(「SunRI 1.2」は、アプリケーションの WebSphere セットアップで使用される実装として選択されます。)
両方に同じ EAR ファイルをデプロイし、同じ手順を実行しました。
元のサーバーでは、すべて正常に動作します。ただし、新しいサーバーでは、(明らかに) デプロイが成功した後、アプリケーションにログインするとき (つまり、レンダリングされる最初のページ) にこの例外が発生し続けます。
(セル/EAR/WAR/パッケージ名を*****で匿名化しています)
(つまり、h:commandLink --ここでのようにプロパティを探すべきではなく、代わりに実行するメソッドを探すべきであることに注意してください!)
実際、これは JSF エンジンが遭遇する (ほぼ) 最初の EL 式です。
クラス UserLanguageBean は JSF Bean として登録されており、メソッド chooseLocale() を持っています。(そうしないと、古いサーバーでも機能しません。) 興味深いことに、古いサーバーは、少なくともデバッガーによると、例外がスローされるコードの部分にさえ到達しません!
現在(一部の JSF/Myfaces/Richfaces ライブラリが適切にロードされていないという疑いに基づいて)、次のことを試しました。
血まみれの詳細が続きますので、あなたがせっかちなタイプであるがすでにアイデアを持っている場合は、読み進めずに自由に回答を投稿してください!
--- 詳細: ---
両方のサーバーで詳細なクラスの読み込みをオンにして、native_stderr.log ファイルを比較しました。違いはありましたが、すべての JSF 関連のクラス (grep "(face\|jsf)" など) は同じ jar から来ているようです。
- 古いサーバーにしかロードされておらず、新しいサーバーにはロードされていないクラスがいくつかありましたが、(それらがどのクラスであるかに基づく直感)私はそれを新しいサーバーがポイントに達しなかったという事実に置きました実際に最初に表示された xhtml ページをレンダリングします (上記を参照)。
2 つのプラットフォームのそれぞれにデバッガーを接続し、クラスローダー (およびその親クラスローダーなど) を調べました。クラスパスに同じ jar があるようです。(EAR に存在しないものを含む。) - ポイント 1 と同様に、コピーの貼り付け、grepp、およびソートによってこれを特定しました。
新しいサーバーでの展開中にエラーを確認しました: (「悪い」もの)
- WebSphereコンソールでは、すべて問題ないと表示されました
- 展開中にログに記録されたいくつかの例外がありましたが、それらは古いもののログにはありませんでした (「良い」もの)。
構成をエクスポートし、(いくつかのサーバー名とベースディレクトリの違いを除いて) それらを比較しました。
- 繰り返しますが、セットアップの違いは見つかりましたが、JSF などと関係があると思われるものは何もありませんでした。
デバッガーで、a) 古いサーバーで JSF によって UserLanguageBean.chooseLocale() が呼び出される場所、および b) 新しいサーバーで ELException がスローされる場所のスタック トレース [2] を確認しました。
==> FacesServlet.service() (myfaces-api-1.2.7.jar に由来) のこの部分:
脚注:
[1]
==>だから、正確にどれを使っているのかよくわからない
[2]
a) 古いサーバーでの適切な実行:
b) 新しいサーバーでの例外: 最初のスタック トレース + PropertyNotFoundException (実際の例外) のスタック トレースを参照してください。
java - JSP での Java PropertyNotFoundException
私はJavaサーブレットを持っています
クラス Book は次のように定義されます。
index.html は次のとおりです。
そして、displayBook.jsp は次のとおりです。
サーバーを実行すると、根本原因の下に次のようなエラーが発生します
JSP ファイルに必要なインポートがあり、変数がクラスで宣言されていますが、公開されているにも関わらずアクセスできません。
どこで何が問題なのかわかりません。使ってみました
別の回答で提案されたように、うまくいきませんでした。