Because Kodo is a highly customizable environment, many configuration properties relate to the creation and configuration of system plugins. Plugin properties have a syntax very similar to that of Java 5 annotations. They allow you to specify both what class to use for the plugin and how to configure the public fields or bean properties of the instantiated plugin instance. The easiest way to describe the plugin syntax is by example:
Kodo has a pluggable L2 caching mechanism that is controlled by the
kodo.DataCache
configuration property.
Suppose that you have created a new class,
com.xyz.MyDataCache
, that you want Kodo to
use for caching. You've made instances of
MyDataCache
configurable via two methods,
setCacheSize(int size)
and
setRemoteHost(String host)
. The sample
below shows how you would tell Kodo to use an
instance of your custom plugin with a max size of 1000 and a remote
host of cacheserver
.
JPA XML format:
<property name="kodo.DataCache" value="com.xyz.MyDataCache(CacheSize=1000, RemoteHost=cacheserver)"/>
JDO properties format:
kodo.DataCache: com.xyz.MyDataCache(CacheSize=1000, RemoteHost=cacheserver)
As you can see, plugin properties take a class name, followed by a comma-separated list of values for the plugin's public fields or bean properties in parentheses. Kodo will match each named property to a field or setter method in the instantiated plugin instance, and set the field or invoke the method with the given value (after converting the value to the right type, of course). The first letter of the property names can be in either upper or lower case. The following would also have been valid:
com.xyz.MyDataCache(cacheSize=1000, remoteHost=cacheserver)
If you do not need to pass any property settings to a plugin, you can just name the class to use:
com.xyz.MyDataCache
Similarly, if the plugin has a default class that you do not want to
change, you can simply specify a list of property settings, without a
class name. For example, Kodo's query cache companion to the data cache
has a default implementation suitable to most users, but you still might
want to change the query cache's size. It has a CacheSize
property for this purpose:
CacheSize=1000
Finally, many of Kodo's built-in options for plugins have short alias
names that you can use in place of the full class name. The
data cache property, for example, has an available alias of
true
for the standard cache implementation. The
property value simply becomes:
true
The standard cache implementation class also has a CacheSize
property, so to use the standard implementation and
configure the size, specify:
true(CacheSize=1000)
The remainder of this chapter reviews the set of configuration properties Kodo recognizes.