For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custom Class Loader

In certain environments or setups it is necessary to provide specific ClassLoader instances. This can be done by customizing the connection foundation.

If a single ClassLoader is sufficient, just create a new provider by handing over the instance:

EmbeddedStorageManager storage = EmbeddedStorage.Foundation(Paths.get("mydb"))
    .onConnectionFoundation(cf -> 
        cf.setClassLoaderProvider(ClassLoaderProvider.New(myClassLoader))    
    )
    .start();

Or return a ClassLoader depending on the requested type:

EmbeddedStorageManager storage = EmbeddedStorage.Foundation(Paths.get("mydb"))
    .onConnectionFoundation(cf -> 
        cf.setClassLoaderProvider(typeName -> {
            if(typeName.startsWith("com.company.module1."))
            {
                return module1ClassLoader;
            }
            if(typeName.startsWith("com.company.module2."))
            {
                return module2ClassLoader;
            }
            return ClassLoader.getSystemClassLoader();
        })    
    )
    .start();

Class Loader in Application Server

Most application servers load the session's classes with the context class loader. Just use the one of the current thread:

Last updated