月掛夜中央

          懶惰程序員

          常用鏈接

          統計

          最新評論

          2010年2月24日 #

          網易微博的OAUTH認證開發(java版)

               摘要:     網易微博最近也開放了它的開發平臺http://open.t.163.com,其中java版的oauth認證和新浪微博的很類似(貌似都是從twitter那邊copy過來的)。但說句實話,網易java版的sdk和新浪微博的比起來,的確上手比較麻煩,里面提供的example都是把access token寫死,作為參數,具體的代碼如下: public&nb...  閱讀全文

          posted @ 2011-02-16 21:31 月掛夜中央 閱讀(6311) | 評論 (6)編輯 收藏

          springside3.*中log4j和java.util.concurrent的結合使用

               摘要:         在springside3.*中的showcase案例中,有一個把log4j的日志存入數據庫的演示,下面是我對這個案例的學習筆記。 1、我們首先來看下log4j相關日志的配置: #Async Database Appender (Store business&n...  閱讀全文

          posted @ 2011-02-13 21:20 月掛夜中央 閱讀(2215) | 評論 (0)編輯 收藏

          使用XmemcachedClient設置緩存對象過期時間的問題

          前幾天在做一個涉及到memcache的項目,使用XmemcachedClient來操作memcache,由于是一個季度的數據,保存數據時這樣的
           memcachedClient.set(key, expiredTime, value)
          其中設置了過期時間為90天
          int cacheExpireTime = 60*60*24*90;
          結果就杯具了,保存后用get方法取時都是null;后來無意中把過期時間改成小于30天,就完全沒有問題,經過谷歌大神的幫忙,終于發現了原因。
          服務端的處理
          時間處理源代碼【memcached.c】如下:
          #define REALTIME_MAXDELTA 
          60*60*24*30                     // 定義30天的秒數
          static rel_time_t realtime(const time_t exptime) {
                 
          if (exptime == 0return 0;
                 
          if (exptime > REALTIME_MAXDELTA) {                       // 超過30天,是絕對時間
                        if (exptime <= process_started)                         // 小于進程啟動日期
                                return (rel_time_t)1;                                  //
                        return (rel_time_t)(exptime - process_started);   // 返回進程啟動之后的時間差
                 }
           else {                                                                   // 不超過30天,是相對時間
                        return (rel_time_t)(exptime + current_time);       // exptime + (tvsec - process_started)
                 }

          }
          原來超過30天就自動轉換成絕對時間,和進程啟動時間比較,顯然60*60*24*90小于啟動日期的絕對數,所以對象一存入就過期了,肯定取不到數據。
          具體的問題請圍觀這篇文章:http://blog.sina.com.cn/s/blog_539d361e0100nc9h.html

          posted @ 2011-01-21 16:18 月掛夜中央 閱讀(4919) | 評論 (0)編輯 收藏

          xfire的webservice方法中date類型參數為null出現空指針錯誤的問題

          最近在使用xfire開發webservice,發現一個這樣的問題,如果注冊的webservice 方法中的參數有Date類型時,調用該方法時把Date型參數填入null,就會報空指針錯誤,這是xfire的一個bug,很可惜在xfire官方網站上最新版的xfire版本是1.2.6,在這個版本中問題仍然沒有解決,而解決的方法在codeHaus的jira中其實發現了這個問題,這個問題主要出在org.codehaus.xfire.aegis.type.basic.DateTimeType的writeObject方法,在1.2.6中這個方法的代碼是這樣的:

          public void writeObject(Object object, MessageWriter writer, MessageContext context)
              
          {
                  Calendar c 
          = Calendar.getInstance();
                  c.setTime((Date) object);
                  writer.writeValue(format.format(c));
              }
          修改過后的代碼如下:
          public void writeObject(Object object, MessageWriter writer,
                      MessageContext context) 
          {
                  
          if (object != null{
                      Calendar c 
          = Calendar.getInstance();
                      c.setTime((Date) object);
                      writer.writeValue(format.format(c));
                  }
           else {
                      writer.writeXsiNil();
                  }

              }
          加了個對null的判斷就好了。很不幸的是xfire現在變成了cxf,指望官方在新的xfire版本中改正這個bug是沒戲了,大家還是自己改改用吧。

          posted @ 2010-02-24 09:12 月掛夜中央 閱讀(3751) | 評論 (2)編輯 收藏

          主站蜘蛛池模板: 汕头市| 普兰店市| 彩票| 临猗县| 星座| 惠州市| 岐山县| 阿巴嘎旗| 剑河县| 南部县| 古蔺县| 东乡族自治县| 宁津县| 通州市| 宣武区| 湟源县| 陆河县| 永州市| 通河县| 涿鹿县| 铜川市| 信阳市| 奉化市| 麟游县| 柘荣县| 青铜峡市| 荣昌县| 高尔夫| 武夷山市| 黄大仙区| 潍坊市| 沐川县| 华亭县| 凤阳县| 年辖:市辖区| 双辽市| 北票市| 南陵县| 金湖县| 吉林市| 唐海县|