トップ «前の日記(2003-07-04) 最新 次の日記(2003-07-06)» 編集

日々の破片

著作一覧

2003-07-05

_ リトルジョンとビッグベン

思い出しただけ。高校生の頃の隠語。

しかし、バカだねぇ。杉作J太郎のさらばワイルドターキーメンと同じ。

_ Proxyを使ってリークをチェックする。

JDBCのAPIドキュメントはデストラクタの実装のこととか書いているが、Oracleはそんな面倒を見てくれない。

 class JdbcHandler implements InvocationHandler {
   private boolean closed;
   Object obj;
   Throwable stack;
   private JdbcHandler(Object o) {
     obj = o;
     stack = new Throwable();
   }
   public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
     String name = method.getName();
     if (name.equals("close")) {
       closed = true;
     } else if (name.equals("executeQuery")) {
       return createProxy(method.invoke(obj, args));
     } else if (name.equals("prepareStatement")) {
       return createProxy(method.invoke(obj, args));
     } else if (name.equals("createStatement")) {
       return createProxy(method.invoke(obj, args));
     }
     try {
       return method.invoke(obj, args);
     } catch (Throwable t) {
       throw t.getCause();
     }
   }
 }
で、こんな風に使う。
 private Object createProxy(Object o) {
   JdbcHandler j = new JdbcHandler(o);
   list.add(j);
   Object pxy = null;
   if (o instanceof ResultSet) {
     pxy = Proxy.newProxyInstance(o.getClass().getClassLoader(),
            new Class[] { java.sql.ResultSet.class, 
                          oracle.jdbc.OracleResultSet.class, },
            j);
   } else if (o instanceof PreparedStatement) {
     ...
   } else if (o instanceof Statement) {
      ...
   } else if (o instanceof Connection) {
      ...
   }
   return pxy;
 }
で、適当な時点でチェックする。
 for (Iterator i = list.iterator(); i.hasNext();) {
   JdbcHandler j = (JdbcHandler)i.next();
   if (!j.closed) {
     System.err.println("detect jdbc resource leaking !");
     j.stack.printStackTrace();
   }
 }

_ HT系

Hybrid Tea。芳香があるTea系から異種交配によって作られた。いわゆる薔薇は、これ。

_ FL系

なんとなく、花びらの先端が外を向いているし、巻きが甘く感じる。なんの略かは忘れた。フロリデンとかなんとか。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え