<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    the journey is the reward...

    常用鏈接

    統計

    最新評論

    DWR在和spring集成時的bug,SpringCreator.getType???

    DWR在和spring集成時,在dwr.xml中將設置creator="spring",告訴dwr將使用dwr的org.directwebremoting.spring.SpringCreator來創建對象實例,但是SpringCreator.getType地處理是不適當的,讓我們來看看它的源碼[dwr-3.0.0.116]:

    public Class<?> getType()
    {
    if (clazz == null)
    {
    try
    {
    clazz = getInstance().getClass();
    }
    catch (InstantiationException ex)
    {
    log.error("Failed to instansiate object to detect type.", ex);
    return Object.class;
    }
    }

    return clazz;
    }

    我們再來看看它的getInstance,最終由spring來創建實例.

    public Object getInstance() throws InstantiationException
    {
    try
    {
    if (overrideFactory != null)
    {
    return overrideFactory.getBean(beanName);
    }

    if (factory == null)
    {
    factory = getBeanFactory();
    }

    if (factory == null)
    {
    log.error("DWR can't find a spring config. See following info logs for solutions");
    log.info("- Option 1. In dwr.xml, <create creator='spring' ...> add
    log.info("- Option 2. Use a spring org.springframework.web.context.ContextLoaderListener.");
    log.info("- Option 3. Call SpringCreator.setOverrideBeanFactory() from your web-app");
    throw new InstantiationException("DWR can't find a spring config. See the logs for solutions");
    }

    return factory.getBean(beanName);
    }
    catch (InstantiationException ex)
    {
    throw ex;
    }
    catch (Exception ex)
    {
    throw new InstantiationException("Illegal Access to default constructor on " + clazz.getName() + " due to: " + ex);
    }
    }

    getInstance將返回由spring來創建的實例,很明顯SpringCreator.getType有點多此一舉,它先創建了實例,再從實例的getClass獲取對象的類型,而spring的beanFactory.getType同樣有此功能,但它不需要先創建實例.

    也許寫這位代碼的仁兄是不知道spring beanFactory.getType這個方法吧!


    我把SpringCreator.getType改正后的代碼 如下:

    public Class<?> getType()
    {
    if (clazz == null)
    {
    try
    {
    if(overrideFactory != null){
    clazz=overrideFactory.getType(beanName);
    }else {
    if(factory == null)
    factory = getBeanFactory();
    clazz=factory.getType(beanName);
    }

    }
    catch (Exception ex)
    {
    log.error("Failed to detect type.", ex);
    return Object.class;
    }
    }

    return clazz;
    }

    如果出現 Error loading class for creator ...... 那么就修改SpringCreator吧!

    posted on 2010-02-10 12:04 adapterofcoms 閱讀(808) 評論(0)  編輯  收藏 所屬分類: java techs

    主站蜘蛛池模板: 99精品热线在线观看免费视频 | 污视频网站免费在线观看| 一色屋成人免费精品网站| 亚洲综合综合在线| 99爱视频99爱在线观看免费| 亚洲精品无码久久久久| 99精品视频免费| 亚洲VA中文字幕无码毛片| 国产情侣久久久久aⅴ免费| 亚洲AV无码国产在丝袜线观看| 亚洲五月综合缴情婷婷| 亚洲AV无码专区国产乱码不卡| 亚洲电影中文字幕| 亚洲综合校园春色| 在线天堂免费观看.WWW| 色噜噜亚洲男人的天堂| 好爽…又高潮了毛片免费看| 国产精品久久久久久亚洲影视| 午夜亚洲国产成人不卡在线| 又长又大又粗又硬3p免费视频| 伊人久久精品亚洲午夜| 永久免费不卡在线观看黄网站| 亚洲人成电影在在线观看网色| 在线观看免费中文视频| 亚洲日日做天天做日日谢| 免费看大黄高清网站视频在线| 午夜成人无码福利免费视频| 亚洲人成色77777| 天天影视色香欲综合免费| 亚洲国产成人无码AV在线影院| 亚洲av高清在线观看一区二区| 青青操免费在线视频| 亚洲一卡2卡3卡4卡国产网站| 永久免费视频v片www| 丝袜捆绑调教视频免费区| 久久精品国产亚洲精品2020| 免费黄网在线观看| 中文字幕高清免费不卡视频| 亚洲依依成人精品| 亚洲AV无码乱码在线观看| 午夜影院免费观看|