                                                                2007/02/24
                                                                 팩l

tomcat3œ悤ɉireFacelets



ɂȂ\[X
   jsf ̎QƎ  1.1_02
   Facelets 1.1.11               https://facelets.dev.java.net/
   javax.el ̎(tomcat6̃\[X)


Ƃire{ǂނƁwiretomcat4ȏœAȂׂ5.0ȏ
ĂxƏĂ܂B

ire tomcat3nœۂ̎Ȗ_́AƂ뎟̂R_łB
1)@NX[_̖
2)@iro@\sœ삵Ȃ
3)@̖


1)@NX[_̖ 

   tomcat3 ɂ́Aʂ jaruꏊƁAʃAv jar
   uꏊ܂B

   @   tomcat/lib
              /classes

   A   tomcat/webapps/app1  ʃAvP
                     
                      WEB/INF
                               classes
                               lib

        tomcat/webapps/app2  ʃAvQ
                     
                      WEB/INF
                               classes
                               lib

     @ lib jsf֘AjaruāA ǍʃAv
    ManagedBeang悤ɂƎv܂B

    j̔zz\[X́Atomcat/lib̉ɂłstrawberry-el.jar
@@@@uꍇ삵܂BʃAv̕ɒuƂȂ܂B


   QƎ com.sun.faces.config.ManagedBeanFactory ɂ͈ȉ̂悤ȉӏ܂
   218sڂ
            ClassLoader loader = Thread.currentThread().getContextClassLoader();

   ̃R[fBO tomcat3łireȂłB

   l
    javax.faces.FactoryFinder ̏ꍇ́A 353sڂȉ̂悤ȃR[h܂

        // J2EE 1.3 (and later) containers are required to make the
        // web application class loader visible through the context
        // class loader of the current thread.
        ClassLoader cl = Thread.currentThread().getContextClassLoader();

   RgɏĂJ2EE 1.3 (and later)Ƃ̂tomcat4ȏオKvƂ
   ӖłBtɂƁÃR[fBO(ӏ)邽߂ tomcat3͓Ȃ
 @ȂĂ܂܂B
   ̂߁Atomcat3œƎvƃ\[X̉KvɂȂ܂B

   Ȃ݂ɁA
Servlet/JSP Spec  Apache Tomcat version   J2EE
  2.4/2.0            5.5.20               
  2.3/1.2            4.1.34               J2EE 1.3?
  2.2/1.1            3.3.2                J2EE 1.2?
   łB

   
   CɂȂ́A\[X̒ÃL[[h(Thread.currentThread())ŌĂ݂ĂB
   irẽ\[X̉ӏŎgĂ܂B

   ԖɂȂ̂AManagedBeanFactory ŁAɖɂȂ肻Ȃ̂Ajavax.faces.FactoryFinder
   łB

    \[Xł́ÂQӏ̑Ή΁Atomcat3łȂɂire͎g悤ɂȂ܂B

    ̓Iȕ@͌ŏqׂ܂B


2)@irõo[WÂ܂Ȃ
    tomcat4, tomcat5Ƃiro@\Ă܂Bire͕Włirő@\ĝłA
    tomcat3 ł͂irő@\sł܂ȂlqłB

    ̖ Facelets 1.1.11 gŉł܂B
    Facelet irog킸 XHTMLwlkp[Tŉ͂̂łB

3)@̖

    ire̎QƎɂ́As ServletContextListener
    Ƃ@\gĂ܂B

    QƎ com.sun.faces.config.ConfigureListener ̃\[XłB

    ServletContextListener tomcat4ȏłȂƓȂlłB

    ƂẮAp̃T[ubg쐬āAweb.xmlɓo^
    ̑܂B

    ̃\[XuĂ܂̂ŁAǂ̂悤ȉs
    Kȃ\[X̔rc[ŒׂĂB
     eLXgt@Cr[eBeB[ DF(ł)gĂ܂B

ȏCTv

C001   ManagedBeanFactory  NX[_̖
@@̉ӏAabstract\bhŒoāAgetContextClassLoader()gȂ
@@FXȕ@߂Č܂B(I[oChNXĂ݂܂)

@@FXĂ݂āACɓ@́ÂƂłB
@@ʃAvP[V̒ŁAʂlibclass̒ɓĂIuWFNg
@@newBAServletContextɕۑB̃IuWFNg͌ʂ̃NX[_
@@[hꂽIuWFNgɂȂ܂B

@@̏͏sT[ubg̒ōs܂B

    ɁAManagedBeanFactory  getContextClassLoaderӏŁÃIuWFNg
    ServletContexto܂BẴNX[_߂ƁAʃAv
@@NX[_܂B

    ̓Iɂ́Aapp.InitializeServletœo^DummyClass
    strawberry.configre.ManagedBeanFactorySC ŎoĂ܂B

C002  FactoryFinder ̃NX[_̖ΉB
     قǂ́AManagedBeanFactory ́Ajsf-impl.jarɓĂ̂łA
      jsf-apiɊ܂܂Ă܂B
     jsf-apiɎƂl̂łAFXjart@C
     o[WǗԂɂȂ̂ŁAjsf-api.jar͎ɎgƎv܂B

   KɂāAAvP[ṼNXǵAقƂǂȂ
   irȅ̓rŎgĂꍇقƂǂłB

   FXlA͂̃NXg킸ɏs悤ɏC鎖ɂ܂B

   ̓Iɂ́ÃNXcom.sun.faces.config.ConfigureListener CāA
    FactoryFindergȂɂ܂B
   \[Xstrawberry.configurẻɂ܂B

C003   L̉ĂۂɁA͂Ă܂A
      faces-config ̉͂, ManagedBean ݂̂ɂĂ܂܂B
      ManagedBeanȊO̍\͌ݎ󂯕t܂Bn[hR[fBOĂ܂B

C004   FacesServletɑ@\ strawberry.FaceletsBridgeImpl łĂ̂łA
   ƂƁAConfigureListener ̒ɂAWbN̈ꕔ,FaceletsBridgeImpl
   ړ܂B
   ̓Iɂ́AManagedBean֌ŴݏɎc, RenderKitFactory, Application, Lifecycle
   쐬 FaceletsBridgeImpl ōsĂ܂


C005    FaceletsBridgeImpl łAExternalContext  ResponseWriter ́AdwarfōĂ
   IWĩR[hɍւĂ܂B
   ExternalContext  tomcat3  filter-apigȂ̂ŁA{΍̃R[ĥł
   gݍ݂߂ɁAƎ(dwarfō)ɍւĂ܂B
     dwarf.jsf.context.ExternalContextGxłB

C006   StateManageŕA悭킩ĂȂ̂ŁAȗĂ܂B
       Application ɃZbgĂ܂B

C007   Facelets Ƃ JSF1.2MyFacesɑΉĂ܂AJSF1.1_02jsf-api.jar
      RpĈŁARpCG[oƂAFXCĂ܂B

C008   Facelets  com.sun.facelets.FaceletViewHandler ͐FXĂ܂B
       IWî͂tqk̃p^[ɂāAFaceletsŏ邩Airoŏ邩
@@@U蕪܂B

       C\[X́AiiroȂ̂Łj handledByFacelets() ͏trueԂ
       Faceletsŏ܂

C009     com.sun.facelets.FaceletViewHandler  getRenderedViewId()łA
        http://localhost:8080/app1/faces/Sample.htmlŃANZX

        IWi /Sample.htmlɂȂ܂A
        ̍D݂ɂ /faces/Sample.htmlɂȂ悤ɕύXĂ܂

C010     com.sun.facelets.FaceletViewHandlerłA
        com.sun.facelets.impl.ResourceResolver ͍ւ\ɂ̂ŁA
       setCustomizedResourceResolver() ǉāAւ\ɂĂ܂

        ResourceResolver̓ANZXtqkǂݍhtml(XHTML)߂NX
        strawberry.FacesResourceResolverɍւĂ܂B

C011   NavigationRuleɑ镔́Axmlɏ̂ʓ|Ƃ̍D݂ɂ폜܂

        IWi ANV "success""fail"̂悤ȕƁA
        NavigationHandlerirQ[V[āÂtqkɈړ܂B

        s
        http://localhost:8080/app1/faces/Sample.htmlŃANZX
        ĂяoꂽANV  /faces/Next.htmlԂ
        http://localhost:8080/app1/faces/Next.htmlɈړ悤ɂĂ܂B

@@@@IWiD݂͈̕ȉ̃t@CCĂ݂ĂB
        com.sun.faces.application.ActionListenerImpl
        com.sun.faces.application.NavigationHandlerImpl
               PTRsڂɁAƎǉĂ܂

        strawberry.configure.ConfigureListenerEx

C012   ResponseWriteŕA{ꂪ #̂PUiŕ\̂Ȃ̂ŁAƎ̃R[hɍւĂ܂
       dwarf.view.StringResponseWriterłB

       com.sun.facelets.FaceletViewHandler 558sڂłB

C013   Buttoñ_̂ com.sun.faces.modify.ButtonRenderer ɒǉĂ܂

       strawberry.configure.RenderKitFactoryInitializerEx  58s

C014   javax.el ̃\[X JDK1.4.2ŃRpCłlAG[oƂCĂ܂

C015   org.apache.el.lang  FunctionMapperImpl ̓Tv̊֐𓮂悤
       CĂ܂B

       āAhttp://java.sun.com/jsp/jstl/functionsǉ΁A
        com.sun.facelets.tag.fn.JstlFnLibraryĝȁH
        C orz


ӎ   Facelets ϋCɓĂ܂B
       Facelets ĂҁiJ`[j̕AϊӂĂ܂B

