2008/08/13

JRUBYでCAYENNEをつかう

registerNewObjectの部分でうまく動作しない。
ひとひねり必要そうだ。

JRUBY

配列内の項目を特定の値に入れ替える

itemList = ["aaaa", "bbbb", "cccc"]

itemList.collect! {|item|

if item == "bbbb" then
'dddd'
else
item
end
}

2008/06/04

VBSでUNICDEの全角文字数を判断する関数


' UNICODEでも全角半角の文字数を判断するメソッド
Function LenByte(ByVal s)

Dim c, i, k

c = 0

For i = 0 To Len(s) - 1

k = Mid(s, i + 1, 1)

If (Asc(k) And &HFF00) = 0 Then

c = c + 1

Else

c = c + 2

End If

Next

LenByte = c

End Function

2008/05/27

cayenne+pgpoolではまりどころ

以前、pgpoolをcayenneで利用する為について記載した。
しかし、pgpoolやjndiで再接続機能を利用する為には更に工夫が必要だ。


以下のようにTransactionクラスを継承したクラスを作成する。


import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;

import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.Transaction;

public class NoTransaction extends Transaction {

@Override
public void begin() {
}

@Override
public void commit() throws IllegalStateException, SQLException, CayenneException {
close();
}

@Override
public void rollback() throws IllegalStateException, SQLException, CayenneException {
close();
}

protected void close() {

if (connections == null || connections.isEmpty()) {
return;
}

Iterator it = connections.values().iterator();
while (it.hasNext()) {
try {

((Connection) it.next()).close();
}
catch (Throwable th) {
}
}

}

}


そしてSQLを実行する部分をトランザクションしないよう以下のようにする。


Transaction tx = new NoTransaction();
try {

Transaction.bindThreadTransaction(tx);

Expression expression = ExpressionFactory.matchExp(~);
SelectQuery query = new SelectQuery(Ent.class, expression);
List entList = getDataContext().performQuery(query);
if (CollectionUtils.isEmpty(entList))
return null;

return entList;

}
finally {
try {
tx.commit();
} catch (Exception e) {

}
}

2008/03/31

rubyのgem自身アップグレード

gem update --system

Tomcat5.5のログ設定

Tomcat5.5ではデフォルトのログ出力機能はlog4jからJDKのjava.util.loggingを利用するように変更された。
log4jのほうが出力フォーマットの設定等柔軟に変更できるのでlog4jにログ出力を統一しようと思ったら以下のことをやらなければならない。
①${tomcat.home}/common/libにcommons-logginとlog4jのライブラリをおく。

②${tomcat.home}/common/classesにlog4j.xmlをおく