[Seasar-user:4482] Re: [S2JSF] WebSphere上で、 PropertyNotFoundRuntimeException
松山 大樹
[E-MAIL ADDRESS DELETED]
2006年 9月 1日 (金) 09:48:48 JST
松山です。
>S2JSF1.0系、1.1系共にBindingUtilを修正しました。
>次のバージョンに反映されます。
>
>下記にSNAPSHOTをおいたので、こちらを試してもらえないでしょうか?
>http://s2jsf.seasar.org/download/2006-08-31/s2-jsf-1.0.17-SNAPSHOT.jar
>http://s2jsf.seasar.org/download/2006-08-31/s2-jsf-1.0.17-SNAPSHOT-sources.jar
確認してみました。問題ないようです。
ありがとうございました。
>
>よろしくお願いします。
>
>06/08/31 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> 大谷です。
>>
>> 下記の調査ありがとうございます。
>> ひとまずBindingUtilを修正する方向で進めます。
>>
>> > ただ、これで他に影響がないかどうかは、全く不明です。
>> > そもそも、どうして、requset の、attribute に、e という名前が残っているのか
>> > (または消えていないのか)を調査した方がいいのかもしれませんが。
>>
>> これは多分HttpServletRequest.removeAttributeの実装が
>> WASとTomcatで違うからではないかと考えられます。
>> Tomcatは完全に消去してしまうけれど、WASはvalueだけ
>> 消しているかも。
>>
>>
>> 06/08/31 に 松山 大樹<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> >
>> > 松山です。
>> >
>> > とりあえず、
>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 mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://www.seasar.org/mailman/listinfo/seasar-user
>> >
>>
>>
>> --
>> =============================
>> Shinpei Ohtani
>> [E-MAIL ADDRESS DELETED]
>> =============================
>>
>
>
>--
>=============================
>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 メーリングリストの案内