2007/08/21

Setzen des Programm-Names für Oracle JDBC Verbindungen

Oracle (und sicher auch andere DBMS) bieten die Möglichkeit, für Sessions einen Programm-Namen zu hinterlegen. Dies ist insbesondere beim Debugging hilfreich. Oder um den Schuldigen zu finden, der eine Verbindung nicht wieder ordentlich geschlossen hat. Die JDBC API scheint hierfür keine Möglichkeit zu kennen, man muss den entsprechenden Parameter daher in einer Properties ablegen und beim Erzeugen der Connection mitgeben:


public static void main(String[] args) throws SQLException {

Properties connectionProps = new Properties();
connectionProps.put("v$session.program", "ProgrammName" );
connectionProps.put("user", "scott");
connectionProps.put("password", "tiger");
Connection con = null;

try {
Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:devel", connectionProps);

// ...

} catch (Exception e) {

e.printStackTrace();
} finally {
if(null != con) {
con.close();
}
}
}
Ein Select auf die v$session sollte jetzt solange die Connection offen einen Eintrag mit 'ProgrammName' liefern.

Das ist natürlich auch nur geklaut ;)

2007/08/16

Subversion checkout von Ant

Um von Ant aus auf Quellen im Subversion zuzugreifen existieren eine Reihe von Möglichkeiten, eine Suche bei Google spült zuerst Refenzen auf:

an Land, sicherlich noch ein paar mehr. Ich fand, das die entweder tot sind oder elendig umständlich in der Einrichtung. So brauchen sie in der Regel den Subversion Client installiert, obstruse javahl Installierungen oder andere Schweinereien.. Da ich auf der fraglichen Maschine keine root Rechte habe und auch nicht vor dem Support auf den Knien rutschen wollte, kam das alles nicht in Frage. Nach einer kurzen Periode in der ich einfach wget von Ant aus gerufen hab (geht, aber ist nun wirklich nicht elegant) bin ich dann glücklicherweise auf Svn4Ant gestoßen.

Installation ist super einfach, nur die nötigen jars (AntX_tasks.jar, JWare_apis.jar, svn4ant.jar) in das Ant-Lib Verzeichniss legen. Zusätlich wird noch die svnkit.jar aus dem SVNKit Projekt benötigt, und schon kann es losgehen.

Noch eine Taskdef:

<taskdef name="svncheckout" classname="com.idaremedia.svn4ant.client.solo.SvnCheckoutTask"/>
anlegen und man kann per

<svncheckout from="${reposURL}" to="${checkout.dir}"/>
die aktuellen Quellen auschecken.

Warum nur hab ich das nicht gleich gefunden?