2006年9月8日

          websphere/weblogic/tomcat/applet 設置遠程調試


          websphere:
          管理控制臺(administractive console)->應用程序服務器(application server)->服務器名(如server1)->調試服務(Debug service)->啟動(勾上),其它默認,記住JVM調試端口->保存重啟
          netstat -a查看JVM調試端口是否處于監聽狀態,以確保調試服務已啟動

          weblogic:
          修改startWeblogic.bat
          set PRODUCTION_MODE=true/false
          set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n
          或(set DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=7009,suspend=n)
          然后在啟動命令中加入%DEBUG_OPTS%,如%JAVA_HOME%\bin\java %DEBUG_OPTS%...-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%...

          tomcat:
          修改tomcat/bin/的catalina.bat文件
          SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888
          如在linux下,則
          CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"
          也就是把SET去掉,后面加雙引號引起來,

          在eclipse中,
          debug->open debug dialog->
          設置好project ,host和port就行了,port就是以上配置的端口號(address)

          applet:

          1. 在程序運行機器上為Applet程序啟動時自動開啟JDWP服務。

          $>cd $JAVA_HOME/bin

          $>./ControlPanel

          在 隨后彈出的Java Control Panel對話框中,選擇Java Tab頁,在Java Applet Runtime Settings項中點擊View按鈕,在彈出的Java Runtime Versions對話框中設置Java Runtime Parameters為:

          -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

          注:Windows上可到控制面板中運行Java控制面板程序打開Java Control Panel對話框。

          2. 在Eclipse中建立Java Service Client程序的工程,使其包含需要調試的源代碼。編譯打包目標代碼并拷貝到上一步設置好的機器上的相應目錄中。注意編譯時要選擇打開debug模式 (確保javac的調試相關參數為-g或沒有。如果使用Eclipse編譯,請使用Eclipse的相關設置,Eclipse默認的編譯選項是打開 debug選項的)。

          3.在設置好的機器上啟動目標程序。

          4.在Eclipse中使用Debug對話框("Run"->"Debug")建立一個Remote Java Application調試項目。填入下列信息:

          Host:程序執行機器的IP地址

          Port:8000 (就是是第一步設置的address參數)

          啟動這個調試項目。


          提示:如果將suspend參數設為y,則每次啟動程序都會自動掛起,直到遠程調試機器連接上后才繼續執行。這樣就可以從程序入口處單步跟蹤程序的執行過程了。


          posted @ 2008-09-10 12:12 hardson 閱讀(2398) | 評論 (0)編輯 收藏

          用戶組及sudoers權限問題

          1、列出所屬用戶組:
          groups
          2、sudo chmod u+w /etc/sudoers后,不能再執行sudo命令,提示sudo 的 mode 為0640,應該是0440。此時系統不能以root用戶登錄到gnome,不能更改sudoers權限。于是在xp下載了Paragon Ext2FS Anywhere 3.0安裝并修改/boot/grub/menu.list文件,使啟動延時設為3(原來為了快速啟動,設為0,導致不能選擇linux啟動菜單),重啟進入ubuntu啟動菜單,選擇recover模式,進入后又一個菜單,選擇進入root命令行模式(此時root尚未設置密碼,后來設了),執行chmod u-w /etc/sudoers后進入正常模式ubuntu,一切恢復正常
          3、裝了db2后,以實例用戶登錄管理數據庫,實例db2inst1不能執行root權限,很不方便。可以把db2inst1加入admin組后重啟,就可以執行sudo了。
          sudo usermod -G  admin db2inst1(如果是-g,則會替換現有的組,所以必須是-G才能追加)
          或者在系統管理/用戶和組里管理用戶和組。


          posted @ 2008-05-21 02:50 hardson 閱讀(729) | 評論 (0)編輯 收藏

          db2 9.5 express 在ubuntu下的圖形安裝及中文處理

          參照http://wiki.ubuntu.org.cn/Java%E4%B8%AD%E6%96%87%E6%94%AF%E6%8C%81
          1、下載db2exc_950_LNX_x86.tar.gz和語言包支持(中文支持需要這個包)db2_v95_linuxia32_nlpack.tar.gz
          2、將上面兩個包考至/opt/并解壓
          3、在系統管理的語言支持那里轉入英文環境(中文環境無法顯示中文),重啟。
          4、在安裝目錄直接sudo ./db2setup按提示安裝。
          5、復制微軟字體simsun.ttc到/usr/share/fonts/truetype/songti/下,songti目錄隨便建。
          6、進入db2的java安裝目錄中的/opt/ibm/db2/V9.5/java/jdk32/jre/lib,sudo cp ./fontconfig.RedHat.3.properties.src ./fontconfig.properties
          (注:使用fontconfig.RedHat.5.properties.src不成功,沒有償試使用fontconfig.RedHat.4.properties.src)
          7、sudo gedit ./fontconfig.properties
          把第一部分的allfonts...改成
          # 中文字體支持部分=====
          allfonts.chinese-gb18030=-songti yuanti-medium-r-normal--*-%d-*-*-*-*-iso10646-1
          allfonts.chinese-gb18030.motif=-songti-medium-r-normal--*-%d-*-*-*-*-gb2312.1980-0
          allfonts.chinese-big5=-songti-medium-r-normal--*-%d-*-*-*-*-iso10646-1
          allfonts.chinese-big5.motif=-songti-medium-r-normal--*-%d-*-*-*-*-gb18030.2000-0
          # =====中文字體支持部分
          8、在后面的filename.部分的后面加入
          # 中文字體支持部分=====
          filename.-songti-medium-r-normal--*-%d-*-*-*-*-iso10646-1=/usr/share/fonts/truetype/songti/simsun.ttc
          filename.-songti-medium-r-normal--*-%d-*-*-*-*-gb2312.1980-0=/usr/share/fonts/truetype/songti/simsun.ttc
          filename.-songti-medium-r-normal--*-%d-*-*-*-*-gb18030.2000-0=/usr/share/fonts/truetype/songti/simsun.ttc
          # =====中文字體支持部分
          9、保存后用實例用戶登錄,在sqllib/bin/db2cc,中文出來了

          注:如果是64位系統,下載64位的db2安裝文件和安裝語言包,安裝前先執行如下命令
           
          sudo apt-get install libstdc++5
          sudo apt-get install libaio-dev

          如果開啟了特效,安裝圖形界面會顯示空白,必須關掉特效來安裝

          posted @ 2008-05-13 01:09 hardson 閱讀(1599) | 評論 (0)編輯 收藏

          非基本數據類型對象列表比較器

          寫了一個比較器,實現功能如下:
          有列表List list,list存放對象(如Person p等),對象里面有若干屬性。
          要求對列表按照列表對象的某個屬性進行排序。列表對象類型未知,對象屬性未知。
          通過通知比較器列表對象類型和排序字段,以及升序或降序,來對列表進行排序
          (其實就是實現復雜對象列表排序)
          注:由于實際應用中,要排序的列表結果集已經得到,程序應用沒有錯誤或異常,
          比較器只實現排序功能,因此在比較器中封閉異常

          本人實現代碼如下,希望大家提供一些意見來完善

          //比較器總接口類
          package myutil.comparator;

          import java.lang.reflect.InvocationTargetException;
          import java.lang.reflect.Method;
          import java.util.Comparator;

          public abstract class ListComparator implements Comparator{
              public static final int DATATYPE_STRING=1;//字符串類型
              public static final int DATATYPE_DOUBLE=2;//雙精度浮點型
              public static final int DATATYPE_DATE=3;//日期類型
             
              public static final int ORDER_ASC=100;//順序
              public static final int ORDER_DESC=101;//倒序

              protected String colName="";//被比較的屬性名稱
              protected Class cl=null;//被比較的列表對象的類型
              protected int order=ORDER_ASC;//順序或倒序,默認為順序

                 
              /**
               * 比較器的比較方法,在子類中實現
               */
              public abstract int compare(Object o1, Object o2);
                 
              /**
               * 獲取兩個比較對象的指定屬性(colName)的值
               * @param obj1 要比較的一個對象
               * @param obj2 要比較的另一個對象
               * @return Object[],被比較的兩個對象中指定屬性的值的數組
               */
              protected Object[] getValueObj(Object obj1,Object obj2){
                  if(obj1==null || obj2==null)
                      return null;
                  try {           
                      int first=colName.charAt(0)-32;//獲得字段名的首字母,并轉化成大寫
                      String mName="get"+(char)first+colName.substring(1);//獲得字段的獲取方法
                      Method m = cl.getMethod(mName,null);//構造方法對象
                      Object val1=m.invoke(obj1,null);//調用方法,得到對象1的colName屬性值
                      Object val2=m.invoke(obj2,null);//調用方法,得到對象2的colName屬性值
                      return new Object[]{val1,val2};//返回對象數組
                  }  catch (NoSuchMethodException e) {           
                      e.printStackTrace();
                  } catch (IllegalArgumentException e) {           
                      e.printStackTrace();
                  } catch (IllegalAccessException e) {           
                      e.printStackTrace();
                  } catch (InvocationTargetException e) {           
                      e.printStackTrace();
                  }       
                  return null;
              }   

              /**
               * 交換兩個對象,用于控制升序或降序
               * @param obj1
               * @param obj2
               * @return
               */
              protected Object[] swap(Object obj1,Object obj2){
                  if(this.order==ORDER_DESC){
                      Object oTmp=obj1;
                      obj1=obj2;
                      obj2=oTmp;           
                  }
                  return new Object[]{obj1,obj2};
              }
              /**
               * @return 排序方式(順序/倒序)
               */
              public final int getOrder() {
                  return order;
              }

              /**
               * @param 排序方式(順序/倒序)
               */
              public final void setOrder(int order) {
                  this.order = order;
              }
             
             
              /**
               * @return 列表包裝類型
               */
              public final Class getCl() {
                  return cl;
              }

              /**
               * @param 列表包裝類型
               */
              public final void setCl(Class cl) {
                  this.cl = cl;
              }

              /**
               * @return 排序字段
               */
              public final String getColName() {
                  return colName;
              }

              /**
               * @param 排序字段
               */
              public final void setColName(String colName) {
                  this.colName = colName;
              }
             
              public String toString(){
                  StringBuffer buf=new StringBuffer();
                  buf.append("Column Name(colName):").append(this.colName).append(";");
                  buf.append("Class In List Name(c1):").append(cl.getName()).append(";");
                  buf.append("Order Type(order):").append(this.order).append(".");
                  return buf.toString();
              }
          }

          //工廠類
          package myutil.comparator;

          public class ListComparatorFactory {
             
              public static final ListComparator getListComparator(int dataType){
                 
                  switch(dataType){
                  case ListComparator.DATATYPE_STRING:
                      return new StringListComparator();
                  case ListComparator.DATATYPE_DOUBLE:
                      return new NumberListComparator();
                  case ListComparator.DATATYPE_DATE:
                      return new DateListComparator();
                  default:           
                      return new DefaultListComparator();
                  }       
              }   
          }
          //默認實現類
          package myutil.comparator;

          public class DefaultListComparator extends ListComparator{
             
              public int compare(Object obj1, Object obj2) {
                  Object swapObj[]=this.swap(obj1,obj2);
                  Object obj[]=this.getValueObj(swapObj[0],swapObj[1]);
                  if(obj==null)
                      return 0;
                  Comparable cmp1=(Comparable)obj[0];
                  Comparable cmp2=(Comparable)obj[1];
                  return cmp1.compareTo(cmp2);       
              }
             
              public String toString(){       
                  return super.toString();
              }
             
          }


          //比較字段為日期型的實現類
          package myutil.comparator;

          import java.text.DateFormat;
          import java.text.ParseException;
          import java.text.SimpleDateFormat;
          import java.util.Date;

          public class DateListComparator extends ListComparator{
             
              public int compare(Object obj1, Object obj2) {
                  Object swapObj[]=this.swap(obj1,obj2);
                  Object obj[]=this.getValueObj(swapObj[0],swapObj[1]);
                  if(obj==null)
                      return 0;
                  DateFormat format=new SimpleDateFormat("yyyyMMddhhmmss");
                  Comparable cmp1,cmp2;
                  try{
                      cmp1=format.parse(obj[0]==null?"00000000000000":obj[0].toString());           
                  }catch(ParseException pe){
                      cmp1=new Date(0);
                  }
                  try {
                      cmp2=format.parse(obj[1]==null?"00000000000000":obj[1].toString());
                  } catch (ParseException e) {
                      cmp2=new Date(0);
                  }
                  return cmp1.compareTo(cmp2);       
              }
             
              public String toString(){       
                  return super.toString();
              }
             
          }
          //比較字段為數字型的實現類,兼容整數,浮點數
          package myutil.comparator;

          public class NumberListComparator extends ListComparator{
             
              public int compare(Object obj1, Object obj2) {
                  Object swapObj[]=this.swap(obj1,obj2);
                  Object obj[]=this.getValueObj(swapObj[0],swapObj[1]);
                  if(obj==null)
                      return 0;
                  Comparable cmp1,cmp2;
                  try{
                      cmp1=new Double(obj[0]==null?"0":obj[0].toString());
                  }catch(NumberFormatException nfe){
                      cmp1=new Double(0);
                  }
                  try{
                      cmp2=new Double(obj[1]==null?"0":obj[1].toString());
                  }catch(NumberFormatException nfe){
                      cmp2=new Double(0);
                  }
                  return cmp1.compareTo(cmp2);       
              }
             
              public String toString(){       
                  return super.toString();
              }
             
          }

          //比較字段為字符串型的實現類
          package myutil.comparator;

          public class StringListComparator extends ListComparator{
             
              public int compare(Object obj1, Object obj2) {
                  Object swapObj[]=this.swap(obj1,obj2);
                  Object obj[]=this.getValueObj(swapObj[0],swapObj[1]);
                  if(obj==null)
                      return 0;
                  Comparable cmp1=obj[0]==null?"":obj[0].toString();
                  Comparable cmp2=obj[1]==null?"":obj[1].toString();
                  return cmp1.compareTo(cmp2);       
              }
             
              public String toString(){       
                  return super.toString();
              }
             
          }

          //應用測試示例
          package myutil.comparator.test;

          public class MyFile {

              private int age;
              /**
               * @return the age
               */
              public final int getAge() {
                  return age;
              }
              /**
               * @param age the age to set
               */
              public final void setAge(int age) {
                  this.age = age;
              }

              public void display() {
                  // TODO Auto-generated method stub
                 
              }

              public String toString(){
                  return String.valueOf(age);
              }
          }

          package myutil.comparator.test;

          import java.util.ArrayList;
          import java.util.Collections;
          import java.util.List;
          import java.util.Random;

          import myutil.comparator.ListComparator;
          import myutil.comparator.ListComparatorFactory;


          public class SortTest {

              public List doIt(){
                  List list=new ArrayList(10);   
                  Random ran=new Random();
                  for(int i=0;i<10;i++){
                      MyFile mf=new MyFile();
                      mf.setAge(ran.nextInt(100));
                      list.add(mf);
                  }
                  return list;

              }
              /**
               * @param args
               */
              public static void main(String[] args) {
                  SortTest t=new SortTest();
                  List list=t.doIt();
                  ListComparator cm=ListComparatorFactory.getListComparator(ListComparator.DATATYPE_DOUBLE);
                  cm.setColName("age");
                  cm.setCl(MyFile.class);
                  System.out.println(cm);
                  cm.setOrder(ListComparator.ORDER_DESC);
                  Collections.sort(list,cm);
                  for(int i=0;i<list.size();i++){
                      System.out.println(list.get(i));
                  }
              }

          }



          posted @ 2007-06-12 10:54 hardson 閱讀(1304) | 評論 (1)編輯 收藏

          db2檢查一致性

          db2 select tabschema,tabname, status from syscat.tables where status='C'

          檢查一致性
          db2 set integrity for?<table_name> immediate checked

          posted @ 2006-09-08 22:58 hardson 閱讀(627) | 評論 (0)編輯 收藏

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 随州市| 广宗县| 巴马| 响水县| 太谷县| 京山县| 东源县| 冕宁县| 吉安市| 平度市| 大同县| 曲麻莱县| 禄丰县| 大悟县| 西城区| 延边| 六盘水市| 田林县| 介休市| 桓台县| 临潭县| 石城县| 家居| 宜阳县| 芷江| 佳木斯市| 灌阳县| 化州市| 延安市| 阿荣旗| 通化市| 松溪县| 桃源县| 离岛区| 北票市| 逊克县| 杭锦旗| 特克斯县| 濮阳县| 南皮县| 陵川县|