[Seasar-user:4470] Re: [S2JSF] WebSphere上で、 PropertyNotFoundRuntimeException

松山 大樹 [E-MAIL ADDRESS DELETED]
2006年 8月 31日 (木) 10:40:33 JST


 松山です。

 とりあえず、org.seasar.jsf.util.BindingUtil#getValue(HttpServletRequest,String) の、
  if (value == null) {
      return "";
  }
 をコメントにしたら正常に動作するようになりました(JSF1.0.16)。

 ただ、これで他に影響がないかどうかは、全く不明です。
 そもそも、どうして、requset の、attribute に、e という名前が残っているのか
(または消えていないのか)を調査した方がいいのかもしれませんが。

>大谷です。
>
>ありがとうございます。
>引き続きWASで試してみたいと思います。
>
>宜しくお願いします。
>
>06/08/31 に 松山 大樹<[E-MAIL ADDRESS DELETED]> さんは書きました:
>>
>> 松山です。
>>
>> >まだ実際にWASで動かせては無いんですが、
>> >下記の情報から察すると、もしかしたら"e"および"i"は
>> >WASでrequestに何か詰め込んで使っているのかもしれません。
>> >
>> >もし試せたら、別の変数名を使ってもらってためしてもらうことは
>> >できないでしょうか?
>>
>>     <span m:inject="s:forEach"
>>         m:items="#{employeeDtoList}"
>>         m:var="e"
>>         m:varIndex="i">
>>
>> を、
>>
>> <span m:inject="s:forEach"
>>         m:items="#{employeeDtoList}"
>>         m:var="emp"
>>         m:varIndex="index">
>>
>> と変更してやってみましたが、同じ結果でした。
>>
>>
>> >よろしくお願いします。
>> >
>> >06/08/30 に 松山 大樹<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> >>
>> >> 松山です。
>> >>
>> >> WAS と、Tomcat の両方で交互にデバッグモードで動かして、ソースを追って
>> >> いったところ、だいたい次のような原因らしいです。
>> >>
>> >> org.seasar.jsf.util.BindingUtil#getValue() の中の動作です。
>> >> 引数:names の値を、HttpServletRequest から取得している部分です。
>> >> 最初の投稿で書いた、s2jsf-example の、「Employee Management」の例だと、
>> >> names の値は、BindingUtil#getValue() に来た時点でなしになっています。
>> >> このとき、request のattributeName 一覧を取得した結果は、次のように
>> >> なっています。
>> >> ■Tomcat
>> >> [0] = "i"
>> >> [1] = "postback"
>> >> [2] = "org.seasar.jsf.lifecycle.LifecycleImpl.EXECUTED"
>> >> [3] = "class
>> >org.apache.myfaces.renderkit.html.util.JavascriptUtils.OLD_VIEW_ID"
>> >> 引数で与えられるname は、"e" なので、ここでは取得できず、その後の
>> >> 処理でも取得できないので、結果的にgetValue() の返値は、null となります。
>> >>
>> >> ■WebSphere
>> >> [0] = "e"
>> >> [1] = "class
>> >org.apache.myfaces.renderkit.html.util.JavascriptUtils.OLD_VIEW_ID"
>> >> [2] = "com.ibm.websphere.servlet.uri_non_decoded"
>> >> [3] = "org.seasar.jsf.lifecycle.LifecycleImpl.EXECUTED"
>> >> [4] = "postback"
>> >> [5] = "i"
>> >> 属性として、"e" が格納されていて、value は null なので、BindingUtil の、
>68行
>> >目が
>> >> null となります。69行めで、value が null のとき、"" を返しているので、
>> >> getValue() の返値は、"" となります。
>> >> これが、null になっていないため、BeanDescImpl#getPropertyDesc(String) で、
>> >> PropertyNotFoundRuntimeException() になるようです。
>> >>
>> >> HttpServletRequest の実装は、
>> >> Tomcat → org.apache.catalina.connector.RequestFacade
>> >> WebSphere → com.ibm.ws.webcontainer.srt.SRTServletRequest
>> >> となっていて、attributeName の一覧の内容が異なるのは、この実装の
>> >> 差によるもののようです。
>> >>
>> >> なので、BindingUtil#getValue() で、取得できた値がnull だったら、そのまま
>> >> null を返すようにすれば、解決する気がします。ただし、これはここだけを見た
>話で
>> >、
>> >> ここを修正することによって、どのような影響が出るかはちょっとわかりません。
>> >>
>> >> とりあえず、今日は疲れたので、ここまでにしておきます。
>> >>
>> >> >
>> >> > 松山です。
>> >> >
>> >> > いろいろ環境を変えて試しているところです。
>> >> >
>> >> > WebSphere6.0(J2Se1.4.2ベース) → ×
>> >> > WebSphere6.1(J2SE1.5ベース) → ×
>> >> >
>> >> > Tomcat の場合は、5.0.30 でも、5.5.17 でも正常に動作します。
>> >> >
>> >> > MyFaces がらみかと思い、新しくS2JSF1.1.0 beta3 で作成してみましたが、
>> >> >やはり同様の例外になります。
>> >> >
>> >> > さらに調査中です。
>> >> >
>> >> >>
>> >> >> 松山です。
>> >> >>
>> >> >> Tomcat で開発中のシステムを、本番稼働に備えてWebSphere6.0 で動作させる
>>> >、
>> >> >>こんな例外が出て困っています。
>> >> >>
>> >> >>例外(先頭部分のみ - 例外の全文は添付します)
>> >>
>> 
>>>>------------------------------------------------------------------------------
>> >> >>[06/08/29 16:22:59:175 JST] 00000033 ValueBindingI E   Cannot get value
>> >for
>> >> >>expression '#{e.empno}'
>> >> >>[06/08/29 16:22:59:253 JST] 00000033 ValueBindingI E   TRAS0014I: 次の例
>>> >がロ
>> >> >>グに記録されました。
>> >> >>org.seasar.framework.beans.PropertyNotFoundRuntimeException: 
>[ESSR0065]クラ
>> >ス
>> >> >>(java.lang.String)のプロパティ(empno)が見つかりません
>> >> >>      at
>> >>
>> 
>>>>org.seasar.framework.beans.impl.BeanDescImpl.getPropertyDesc(BeanDescImpl.java:102)
>> >> >>      at
>> >>
>> 
>>>>org.seasar.jsf.el.S2PropertyResolver.getProperty(S2PropertyResolver.java:202)
>> >> >>      at
>> >org.seasar.jsf.el.S2PropertyResolver.getValue(S2PropertyResolver.java:56)
>> >> >>      at
>> >>
>> 
>>>>org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:555)
>> >> >>      at
>> >org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
>> >> >>      at
>> >> 
>>org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:441)
>> >> >>      at 
>javax.faces.component.UIParameter.getValue(UIParameter.java:129)
>> >> >>      at
>> >>
>> 
>>>>org.seasar.jsf.util.UIParameterUtil.saveParamsToRequest(UIParameterUtil.java:40)
>> >> >>      at
>> >>
>> 
>>>>org.seasar.jsf.application.ActionListenerImpl.processAction(ActionListenerImpl.java:58)
>> >>
>> 
>>>>------------------------------------------------------------------------------
>> >> >>
>> >> >> これは、s2jsf-examples を、WebSphere6.0(正確には、Rational Software
>> >> >>Development上
>> >> >>のテストサーバ)に持っていって、
>> >> >> Employee Management → [search]ボタン → 結果一覧の適当な行のEdit、
>> >Delete、
>> >> >>Inquire
>> >> >>をクリックすると発生する例外です。
>> >> >>
>> >> >> 開発中のシステムでは、
>> >> >>s2-framework-2.3.11.jar
>> >> >>s2-extension-2.3.11.jar
>> >> >>s2-jsf-1.0.16.jar
>> >> >> ですが、同じような現象が発生します。
>> >> >> 全ての画面で発生するわけではなく、特定の画面のみです。どのような画面で
>> >> >>発生するのかはよくわかりませんが、ページ遷移をともなう画面にのみ発生して
>>> >る
>> >> >>ような気がします(確実ではありません)。
>> >> >> s2jsf-examples の、他の画面ではこの例外は発生していません。
>> >> >> ただ、Validator で、存在しない日付を入力して[submit] を押すと、
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >>[06/08/29 16:40:51:653 JST] 00000036 ServletWrappe E   SRVE0068E: サーブ
>>> >ット
>> >> >> Faces Servlet で service() メソッドを呼び出せませんでした。 スローされ
>た例
>> >外
>> >> >>: java.lang.NullPointerException
>> >> >>      at
>> >> 
>>javax.faces.convert.ConverterException.<init>(ConverterException.java:105)
>> >> >>      at
>> >>
>> 
>>>>org.seasar.jsf.convert.S2DateTimeConverter.getAsObject(S2DateTimeConverter.java:82)
>> >> >>      at
>> >>
>> 
>>>>org.apache.myfaces.renderkit.RendererUtils.getConvertedUIOutputValue(RendererUtils.java:780)
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >> となります。上の例外とは関係ないとは思いますが。
>> >> >>
>> >> >> 開発中のシステムで発生しているのは、
>> >> >>「メンテナンス画面」→「確認画面」→「完了画面」
>> >> >> と遷移するメンテナンス系の画面で、最初の1回は正常に完了画面まで
>> >> >>遷移しますが、続けて別のデータをメンテナンスしようとすると、同じような
>> >> >>例外になります。
>> >> >>
>> >> >> 例外の中の、
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >>クラス(java.lang.String)のプロパティ(empno)が見つかりません
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >> という部分から見ると、
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >>m:value="#{e.empno}"
>> >>
>> 
>>>>-----------------------------------------------------------------------------
>> >> >> の、e をString として判断してしまっているようです。
>> >> >>
>> >> >> もう少し中を追ってみますが、心当たりがある方、ヒントなどいただけると、
>> >> >>とても助かります。
>> >> >>
>> >> >> よろしくお願いします。
>> >> >>
>> >> >>
>> >> >>--
>> >> >>::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
>> >> >>:::   ITシステム・インテグレートDiv.
>> >> >>:::  Web・ソリューション&システム開発Unit.
>> >> >>:::   松山 大樹 - [E-MAIL ADDRESS DELETED]
>> >> >>---- inline file
>> >> >>_______________________________________________
>> >> >>Seasar-user mailing list
>> >> >>[E-MAIL ADDRESS DELETED]
>> >> >>https://www.seasar.org/mailman/listinfo/seasar-user
>> >> >
>> >> >--
>> >> >::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
>> >> >:::   ITシステム・インテグレートDiv.
>> >> >:::  Web・ソリューション&システム開発Unit.
>> >> >:::   松山 大樹 - [E-MAIL ADDRESS DELETED]
>> >> >:::      tel 045-345-0429 fax 020-4622-7043
>> >> >
>> >> >_______________________________________________
>> >> >Seasar-user mailing list
>> >> >[E-MAIL ADDRESS DELETED]
>> >> >https://www.seasar.org/mailman/listinfo/seasar-user
>> >>
>> >> --
>> >> ::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
>> >> :::   ITシステム・インテグレートDiv.
>> >> :::  Web・ソリューション&システム開発Unit.
>> >> :::   松山 大樹 - [E-MAIL ADDRESS DELETED]
>> >> :::      tel 045-345-0429 fax 020-4622-7043
>> >>
>> >> _______________________________________________
>> >> Seasar-user mailing list
>> >> [E-MAIL ADDRESS DELETED]
>> >> https://www.seasar.org/mailman/listinfo/seasar-user
>> >>
>> >
>> >
>> >--
>> >=============================
>> >Shinpei Ohtani
>> >[E-MAIL ADDRESS DELETED]
>> >=============================
>> >_______________________________________________
>> >Seasar-user mailing list
>> >[E-MAIL ADDRESS DELETED]
>> >https://www.seasar.org/mailman/listinfo/seasar-user
>>
>> --
>> ::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
>> :::   ITシステム・インテグレートDiv.
>> :::  Web・ソリューション&システム開発Unit.
>> :::   松山 大樹 - [E-MAIL ADDRESS DELETED]
>>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://www.seasar.org/mailman/listinfo/seasar-user
>>
>
>
>-- 
>=============================
>Shinpei Ohtani
>[E-MAIL ADDRESS DELETED]
>=============================
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://www.seasar.org/mailman/listinfo/seasar-user

-- 
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・ソリューション&システム開発Unit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]
:::      tel 045-345-0429 fax 020-4622-7043




Seasar-user メーリングリストの案内