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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    最近小結

    Posted on 2007-06-11 19:45 dennis 閱讀(1258) 評論(0)  編輯  收藏 所屬分類: java涂鴉
    最近比較忙,工作上和生活上都是,小結下:
    1.最近主要工作是接手了一些郵箱系統的開發工作,JavaMail倒是越來越熟悉了,碰到一個問題需要注意下,使用imap協議訪問郵件服務器,我在本機jboss和測試環境websphere上測試正常,一放到生產環境下就出問題,后浪費我周末半天的時間檢查才發現,imap默認的LOGIN登錄是使用文本方式登錄,不需要認證,在本機和測試環境都普通的LOGIN方式(有安全隱患的方式),在正式環境的環境變量卻設置為PLAIN認證,導致登錄失敗,改正下:
        props.setProperty("mail.imap.auth.plain.disable""true");
    禁止掉認證即可,還有一些變量設置可以在j2ee api doc里查到。說到底還是對協議的不熟悉就投入開發。


    2.過去辦公自動化系統的文檔顯示局限在word類型,今天弄了個新的ActiveX控件,自動更新或者安裝ActiveX控件,只要設置下CODEBASE即可,比如:
    <OBJECT id="AutoVueX" classid="clsid:B6FCC215-D303-11D1-BC6C-0000C078797F" CODEBASE="http://localhost/xxxx"./>

    3.讀很多開源項目,動態加載配置文件是一個常見的技巧,最近也應用了下,沒什么技術含量,僅記錄下。原理就是通過判斷File類的lastModified()得到修改時間與內存中保存的最近修改時間進行比較,如果大于就讀入配置文件重新設置配置信息:
    private static void checkConfigModify() {
            File file 
    = new File(MailConnectionManager.class.getResource(
                    MailConstants.CONFIG_FILE).getFile());
            
    //如果有修改,重新加載配置文件信息
            if (file.lastModified() > MailConstants.last_modified) {
                MailConstants.last_modified 
    = file.lastModified();
                setConfig();
            }
        }

        
    private static void setConfig() {
            InputStream is 
    = null;
            
    try {
                Properties properties 
    = new Properties();
                is 
    = MailConnectionManager.class
                        .getResourceAsStream(MailConstants.CONFIG_FILE);
                properties.load(is);
                MailConstants.USERNAME 
    = properties.getProperty("username");
                MailConstants.HOST 
    = properties.getProperty("host");
                MailConstants.PASSWORD 
    = properties.getProperty("password");

                System.out
                        .println(
    "配置文件被修改,重新加載配置文件成功!");
                StringBuffer sb 
    = new StringBuffer("username:");
                sb.append(MailConstants.USERNAME).append(
    "   host:")
                        .append(
    "host:").append(MailConstants.HOST);
                
    if (MailConstants.PASSWORD != null)
                    sb.append(
    "     ").append("password:not null");
                
    else
                    sb.append(
    "     password:null");
                System.out.println(sb.toString());
            } 
    catch (Exception e) {
                e.printStackTrace();
            } 
    finally {
                
    if (is != null)
                    
    try {
                        is.close();
                    } 
    catch (IOException e2) {
                        e2.printStackTrace();
                    }
            }
        }

    比較值的注意的就是Class類的getResource和getResourceAsStream方法,當然也可以使用ResourceBundle

    4.最近將項目中過去別人寫的簡單工作流引擎分析了一下,顧名思義,是很簡單,采用數據庫作為流程定義的存儲介質,流程定義也是在web上操作,僅支持順序、選擇、并行路由,簡單的或、與條件選擇,因為只是作為沒有復雜流程的公文流轉系統,倒是符合客戶要求。模型也是基于狀態機。復雜的條件運算是沒辦法做到,沒有采用BeanShell的腳本語言也是個原因。Jruby到1.0了,今天下載了,有空看看。工作流采用Petri網建模是趨勢,可惜那本書我還沒讀完。

    5.spring如何得到FactroyBean本身?我們知道實現FactroyBean接口的getObject方法,返回的就是getObject返回的bean,而如何得到FactoryBean本身呢?答案是加上一個符號&
    factory.getBean("&TestFactoryBean");


    6.SICP讀到2.2節,準備等習題全做完了再一起發上來,忙,讀的慢了。老婆的堂妹來了,租的房子只有一張床,只在這地方呆一年,可不想再買張床,我只好回公司宿舍!-_-
    廢話不說,回家了。



    主站蜘蛛池模板: jizz免费观看视频| 亚洲精品天堂无码中文字幕| 日日躁狠狠躁狠狠爱免费视频| 成人黄动漫画免费网站视频| 在线亚洲午夜片AV大片| 国产精品怡红院永久免费| 亚洲av无码不卡久久| 四虎国产精品免费久久| 亚洲色大18成人网站WWW在线播放| 久草视频在线免费| 亚洲一日韩欧美中文字幕在线| 大学生高清一级毛片免费 | 亚洲精品在线免费看| 最近免费mv在线电影| 亚洲另类古典武侠| 午夜免费福利网站| 黄色三级三级免费看| 伊人久久大香线蕉亚洲五月天| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲中文字幕无码久久精品1 | 亚洲国产成人99精品激情在线 | 亚洲人成人无码网www国产| 国产在线观看免费av站| 久久亚洲精品成人av无码网站 | 全亚洲最新黄色特级网站 | 国产免费久久精品99re丫y| 亚洲欧美日韩中文无线码| 亚洲av片一区二区三区| 精品一卡2卡三卡4卡免费视频| 亚洲人成电影福利在线播放| 香蕉97超级碰碰碰免费公| 久久水蜜桃亚洲AV无码精品| 国产精品亚洲成在人线| 无码免费午夜福利片在线| 一级a性色生活片久久无少妇一级婬片免费放| 久久亚洲2019中文字幕| 18勿入网站免费永久| 日本一区二区三区在线视频观看免费| 亚洲AV日韩精品久久久久| 日韩一区二区免费视频| 久久成人免费电影|