... until the collector arrives ...

This "blog" is really just a scratchpad of mine. There is not much of general interest here. Most of the content is scribbled down "live" as I discover things I want to remember. I rarely go back to correct mistakes in older entries. You have been warned :)

2006-05-31

Subversive

I've been unhappy with the Subclipse Subversion plug-in for Eclipse.  I'm going to try another plug-in:  Subversive.

2006-05-15

Eclipse vs PERM GEN Space

From time to time, Eclipse throws an OutOfMemoryError, complaining that it is out of PERM GEN space.  A bit of reading reveals that PERM GEN space is used as a garbage collection generation space for permanent objects -- such as pieces of classes that are never unloaded.  You can get this error if you load lots of classes.  To increase the size of the PERM GEN space, use:

-XX:MaxPermSize=128m

The default is 64m.

Tomcat and JConsole

If you are running Tomcat as a service, you will not be able to attach to it using JConsole using the 'local' protocol.  You must configure it to accept remote connections, e.g.

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

This recipe does not perform any authentication.  Also, I found out that if you have any -X Java options, they must appear last.  When I tried to put the various -D settings listed above after the -X options, Tomcat (and presumably the JVM) quietly ignored them all.

2006-05-11

ALDSP 2.1 Optimistic Concurrency

When updating, ALDSP generates SQL statements like

UPDATE MY_TABLE SET MY_COLUMN='NEW VALUE' WHERE MY_ID='PRIMARY KEY' AND MY_COLUMN='OLD VALUE'

and inspects the update count to see whether a concurrency error has occurred.  The set of columns that are checked in this way can be either all columns in the SDO object, only the modified columns, or a set of user-specified columns.  However, it turns out that ALDSP will quietly drop columns of data types that are difficult to compare for equality.  At time of writing, this set reasonably includes BLOB, CLOB, LONGVARBINARY, LONGVARCHAR, VARBINARY, and BINARY.  Just as reasonably, but perhaps unintuitively, it also includes FLOAT and DOUBLE.

The list of troublesome data types was gleaned from the methods getUpdateSql() and canBeIncluded() in the class com.bea.ld.dsmediator.update.SQLGenerator.

See also the exchange on this topic in BEA's newsgroups.

2006-05-03

Generic Arrays in Java

Java 1.5 does not support arrays of generic types well (e.g. MyType<Thing>[]).  Avoid them.  See section 7.3 of the Java generics tutorial.

Blog Archive