posts - 31,  comments - 31,  trackbacks - 0
                 這幾天做項(xiàng)目,需要做一個(gè)類(lèi)似于控制臺(tái)的界面,可以將日志回顯到一個(gè)文本區(qū)域里,幾經(jīng)查找,反復(fù)測(cè)試寫(xiě)了以下測(cè)試代碼。
          這是log4j.properties的配置內(nèi)容
              log4j.rootCategory= ,WriterAppender

          log4j.appender.WriterAppender
          =org.apache.log4j.WriterAppender
          log4j.appender.WriterAppender.Threshold
          =debug
          log4j.appender.WriterAppender.layout
          =org.apache.log4j.PatternLayout
          log4j.appender.WriterAppender.layout.ConversionPattern
          =%d{ISO8601} - %- %m%n
          主程序
          import java.io.PipedReader;
          import java.io.PipedWriter;
          import java.io.Writer;

          import org.apache.log4j.Appender;
          import org.apache.log4j.Logger;
          import org.apache.log4j.WriterAppender;

          public class Log4jMain {
              
          static public Logger logger = Logger.getLogger(Log4jMain.class);

              
          public static void main(String[] arg) {
                  
                  
                  Logger root 
          = Logger.getRootLogger();
                  
          try {
                      Appender appender 
          = root.getAppender("WriterAppender");
                      PipedReader reader 
          = new PipedReader();
                      Writer writer 
          = new PipedWriter( reader) ;
                  
                      ((WriterAppender) appender).setWriter(writer);
                      
                      Thread t 
          = new AaaThread(reader);
                      t.start();
                      Logger logger 
          = Logger.getLogger(Log4jMain.class);
                      logger.error(
          "asdf");
                      logger.info(
          "asdf");
                      logger.debug(
          "asdf");
                      logger.fatal(
          "asdf");
                          //hh是一個(gè)class,test方法里只有幾個(gè)logger.info("aaa"),用于測(cè)試用,這東西可以去掉
                      
          new HH().test();

                  }
           catch (Exception e) {
                  }


              }

              
          }
          因?yàn)閘og4j提供的是 Writer,所以通過(guò)使用PipedWriter連接到PipedReader,并通過(guò)一個(gè)thread來(lái)處理PipedReader的數(shù)據(jù)就可以回顯了。如果你需要的話(huà)可以將下面的System.out.println(scanner.nextLine());改成你需要顯示的地方就行了。
          import java.io.PipedReader;
          import java.util.Scanner;

          public class AaaThread extends Thread {
              PipedReader reader;

              
          public AaaThread(PipedReader reader) {
                  
          this.reader = reader;
              }


              
          public void run() {
                  Scanner scanner 
          = new Scanner(reader);
                  
          while (scanner.hasNext()) {
                      System.out.println(scanner.nextLine());
                  }

              }

          }
          posted @ 2008-06-06 09:31 小平 閱讀(1224) | 評(píng)論 (0)編輯 收藏
          這里制作一個(gè)引子,具體內(nèi)容比較多,而且hibernate文檔里的hql篇寫(xiě)的很詳細(xì)
          可以這么用:
          List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
          這樣的話(huà)list里的每個(gè)元素都是一個(gè)map,每個(gè)map里包含兩個(gè)元素
          注意:這里的table1和table2都是class名并不是真的表名,畢竟這是hql。除了可以用map還還支持list和自定義的bean。


          posted @ 2008-04-17 17:05 小平 閱讀(1893) | 評(píng)論 (0)編輯 收藏
          DB2的Type-4驅(qū)動(dòng)真的很詭異,配了兩天沒(méi)配上,發(fā)現(xiàn)是多引了一個(gè)包。就是他----“db2java.zip(db2java.jar)”只要有了他就算你已經(jīng)引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也沒(méi)用。
          不知道怎么回事,本以為多引就沒(méi)錯(cuò),沒(méi)想到載這了。
          順便吧db2 type-4的配置方法貼下面:
          jdbc:db2://ip:port/數(shù)據(jù)庫(kù)
          驅(qū)動(dòng)名:com.ibm.db2.jcc.DB2Driver

          我日他IBM!該死的IBM,我算是服了,配好的type-4驅(qū)動(dòng)中文數(shù)據(jù)顯示的全是亂碼,準(zhǔn)備切到type-2上試試,結(jié)構(gòu)還是不行,查來(lái)查去是數(shù)據(jù)庫(kù)pagecode的事,數(shù)據(jù)庫(kù)的字符集改成gbk,客戶(hù)端的pagecode也改成跟數(shù)據(jù)庫(kù)一樣的,ODBC算是能用了,type-2也能用了,然后又用type-4一試!連不上了!說(shuō)字符集不匹配,上網(wǎng)一查說(shuō)要使用IBM專(zhuān)用的JDK,我日了,換了IBM的JDK,配好環(huán)境變量eclipse又不能用了!我算是被IBM搞死了,一氣之下也不準(zhǔn)備再?lài)L試type-4了。
          我這里用的IBM JDK1.4,db2 V8
          posted @ 2008-04-17 16:51 小平 閱讀(2530) | 評(píng)論 (3)編輯 收藏

          近日抽風(fēng),想了解以下java與串口并口通訊的問(wèn)題,上網(wǎng)查了半天,找到了sun幾年前的一個(gè)破包,comm.jar

          2.0版的,遇到一個(gè)比較奇怪的問(wèn)題,這個(gè)包里的demo程序用cmd可以運(yùn)行,但是用eclipse編譯就不能運(yùn)行,一直以為是dll庫(kù)和配置文件的問(wèn)題,幾乎將兩個(gè)文件copy到了系統(tǒng)中全部可能出現(xiàn)的地方都沒(méi)有解決。百般無(wú)奈之下,找到了http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx這個(gè)博客,下載了rxtx把問(wèn)題搞定了。
          posted @ 2008-04-17 16:40 小平 閱讀(575) | 評(píng)論 (0)編輯 收藏
          如果RMI客戶(hù)端鏈接補(bǔ)上服務(wù)器可能是以下情況導(dǎo)致的:
          1、網(wǎng)絡(luò)不通
          2、端口占用
          3、防火墻(客戶(hù)端機(jī)器的防火墻和服務(wù)器端的防火墻都有可能)
          4、服務(wù)器端所在機(jī)器安裝了linux虛擬機(jī),或者使用的linux或者unix系統(tǒng)
          排除辦法:
          前三種情況都很好解決,主要是最后一個(gè),需要在rmi服務(wù)啟動(dòng)時(shí)加上一句
          java  -Djava.rmi.server.hostname=localhost ……
          其中l(wèi)ocalhost可以強(qiáng)制定義為機(jī)器的IP地址 
          posted @ 2008-02-15 14:11 小平 閱讀(887) | 評(píng)論 (0)編輯 收藏
                 為了滿(mǎn)足將plugin工程打成jar包,但是spring的配置文件不打進(jìn)jar包的需求。很多時(shí)候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時(shí),如果沒(méi)有正確的使用spring的Resource就不能加載spring的配置文件,經(jīng)過(guò)多次嘗試終于找到一個(gè)比較合適的方法,與大家交流。
          public static BeanFactory getFactory() {
                  
          if (factory == null{
                      FileSystemResource resource 
          = new FileSystemResource("appcontextclient.xml");
                      factory 
          = new XmlBeanFactory(resource);
                  }

                  
          return factory;

              }

                  將appcontextclient.xml文件放到工程根目錄下,發(fā)布時(shí)將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關(guān)的路徑來(lái)更改你的目錄(但是有可能在調(diào)試過(guò)程中必須要把a(bǔ)ppcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因?yàn)榇蟛糠謺r(shí)間我們的eclipse IDE是何 workspace分開(kāi)存放的,這樣我們?cè)谡{(diào)試的時(shí)候非常別扭,要到IDE里去修改配置文件)。
                  以上方法并不是唯一的,只是我感覺(jué)用起來(lái)比較合適的,這樣在調(diào)試時(shí)既可以保證appcontextclient.xml文件在工程目錄范圍內(nèi),有可以在發(fā)布時(shí)使文件保持在安裝目錄而不是運(yùn)行環(huán)境的workspace的臨時(shí)目錄里。
                  同時(shí)介紹幾個(gè)方法可以eclipse方法獲得eclipse工具的幾個(gè)重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
                  Platform.getInstallLocation().getURL()                                                 
                  file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/             
                  這是我的eclipse IDE的安裝目錄
                      
                  Platform.getLocation()                                                                        
                  D:/runtime-IDE.product                                                               
                  這是我調(diào)試插件時(shí)生成的臨時(shí)運(yùn)行環(huán)境目錄,是在調(diào)試IDE工程時(shí)生成的,就是發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄
                       
                  Platform.getInstanceLocation().getURL()                                             
                  file:/D:/runtime-IDE.product/                                                       
                   這個(gè)跟上面的一樣
                       
                  Platform.getLocation()                                                                        
                  D:/runtime-IDE.product                                                              
                   這個(gè)跟上面的也一樣
                  
                  Platform.getLogFileLocation()                                                             
                  D:/runtime-IDE.product/.metadata/.log                                         
                  運(yùn)行環(huán)境的日志文件路徑,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下的/.metadata/.log 
                   
                  Platform.getStateLocation(Platform.getBundle("IDE"))               
                  D:/runtime-IDE.product/.metadata/.plugins/IDE                           
                  運(yùn)行環(huán)境中IDE的一個(gè)臨時(shí)目錄,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
                       
                  Platform.getUserLocation()                                                       
                  file:/C:/Documents and Settings/XX/user                                     
                   這是我的文檔的路徑(把用戶(hù)名X掉,哈哈)

                  Platform.getBundle("IDE").getLocation()                                    
                  update@D:/WorkSpace/IDE/                                                     
                  我的IDE工程的路徑,對(duì)應(yīng)發(fā)布時(shí)插件的jar本身,在這個(gè)目錄下的文件將全部包含在發(fā)不得jar里。

                  Platform.getConfigurationLocation().getURL()       
                  file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/  
                  eclipse IDE 自己建的目錄

                  eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個(gè)類(lèi)里找到,具體的就請(qǐng)大家找找API吧
          posted @ 2008-01-05 21:35 小平 閱讀(2014) | 評(píng)論 (0)編輯 收藏
          應(yīng)要求在此提供ibatis批量插入demo下載,謝謝大家的關(guān)注,不過(guò)對(duì)于一些人的不禮貌行為我非常痛心。由于工作地點(diǎn)不能上網(wǎng),不能上網(wǎng),不能及時(shí)回復(fù)大家的留言我深表道歉。下載
          posted @ 2007-12-27 19:52 小平 閱讀(3423) | 評(píng)論 (9)編輯 收藏
          此問(wèn)題網(wǎng)上大部分解決方法是這樣的:
          1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級(jí)->wins標(biāo)簽->去掉啟用LMhosts查詢(xún)前的勾.
          2.控制面版->windows防火墻->高級(jí)標(biāo)簽->本地連接設(shè)置->服務(wù)的標(biāo)簽里勾選安全Web服務(wù)器(HTTPS)即可
          但是我的機(jī)器按照上面操作apache服務(wù)仍然不可以使用,于是索性將服務(wù)中的Windows Firewall/Internet Connection Sharing (ICS的服務(wù)關(guān)掉了,發(fā)現(xiàn)問(wèn)題解決了,apache可以用了。對(duì)于安全問(wèn)題可以選擇第3方的防火墻來(lái)解決。
          注意:費(fèi)爾防火墻好像和apache沖突,也會(huì)導(dǎo)致WSASocket failed to open the inherited socket
          posted @ 2007-10-21 14:53 小平 閱讀(1462) | 評(píng)論 (1)編輯 收藏
                今天用sun的jdk調(diào)的沒(méi)有一點(diǎn)問(wèn)題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報(bào)出向一個(gè)字段中插入了過(guò)長(zhǎng)的數(shù)據(jù),可是程序在幾天前還是沒(méi)有問(wèn)題的,后來(lái)分析可能是字符集導(dǎo)致的,因?yàn)榍皫滋煨薷倪^(guò)informix數(shù)據(jù)庫(kù)的字符集由8859-1轉(zhuǎn)為了zh_cn.gb18030-2000,但解決過(guò)程異常艱難,后來(lái)吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來(lái)猜測(cè)了一下原因:
          1、oracle數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)是是自動(dòng)將數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)為unicode格式,這可能跟java的String默認(rèn)為unicode有關(guān),為了讓大家方便操作,
          2、sun jdk的String在初始時(shí)用的是Unicode格式,ibm的jdk應(yīng)該也是,但是有一點(diǎn),sun的jdk在通過(guò)informix jdbc驅(qū)動(dòng)取數(shù)據(jù)時(shí)不會(huì)將數(shù)據(jù)轉(zhuǎn)成其他字符集,而是仍然使用Unicode,而IBM的則是通過(guò)CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉(zhuǎn)為了zh_cn.gb18030-2000。
          所以在oracle作insert的時(shí)候就會(huì)由于字符集不匹配而報(bào)錯(cuò)
          posted @ 2007-07-18 19:23 小平 閱讀(1000) | 評(píng)論 (2)編輯 收藏
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(2)

          隨筆分類(lèi)

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 集贤县| 颍上县| 乐清市| 长丰县| 福贡县| 柯坪县| 嫩江县| 四川省| 岗巴县| 永宁县| 额敏县| 常德市| 平江县| 晋城| 安龙县| 衡山县| 康马县| 云霄县| 中西区| 通州市| 湖南省| 佛学| 新乡县| 丹凤县| 兴安盟| 泰安市| 岳普湖县| 廊坊市| 九台市| 永康市| 盐城市| 荆门市| 仁化县| 聊城市| 古蔺县| 桐城市| 莎车县| 三门峡市| 克山县| 定州市| 贵州省|