<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 閱讀(809) 評論(0)  編輯  收藏 所屬分類: java techs

    主站蜘蛛池模板: 亚洲乱码一二三四五六区| 亚洲AV乱码一区二区三区林ゆな| 亚洲av永久无码精品三区在线4 | 亚洲a一级免费视频| 99免费精品视频| 精品国产_亚洲人成在线高清| 国产成人无码免费看片软件 | 国产麻豆视频免费观看| 亚洲第一二三四区| 免费v片在线观看视频网站| 亚洲一级毛片免费看| 成人毛片手机版免费看| 国产亚洲中文日本不卡二区| 午夜无遮挡羞羞漫画免费| 亚洲精品无码成人片久久不卡 | 国产一区二区三区无码免费| 春暖花开亚洲性无区一区二区| 国产男女性潮高清免费网站| 黄色毛片免费在线观看| 在线观看亚洲天天一三视| 久久免费精品视频| 亚洲天堂一区在线| 在线观看免费亚洲| 国产一二三四区乱码免费| 久久精品亚洲一区二区三区浴池| 毛片A级毛片免费播放| 日本永久免费a∨在线视频| 亚洲三区在线观看无套内射| 57pao国产成永久免费视频| 亚洲一级毛片免费观看| 亚洲国产综合久久天堂| 最近中文字幕大全免费版在线| 亚洲女人影院想要爱| 亚洲AV无码一区二三区| 久久99青青精品免费观看| 亚洲最大av资源站无码av网址| 相泽亚洲一区中文字幕| 69天堂人成无码麻豆免费视频| 亚洲1区2区3区精华液| 亚洲AV色香蕉一区二区| 免费爱爱的视频太爽了|