The RMI server is configured using a Java properties file (this file may contain comments, which begin with “#”). The server.properties.template file in the bin subdirectory needs to be copied to server.properties and modified to reflect the desired setup. These strings to must be edited to according to the path of the Cartridge installation: “<install_directory>”, “<rmi_hostname>”, “<use_cache>”, “<cache_size>”, “<password>”, “<database>” and “<database_host>”. The cartridge.install_directory setting is required. It should point to the root of the cartridge distribution. Note that the “/” path separator must be used on both Windows and Linux.
cartridge.install_directory = C:/packages/rmi
If multiple interfaces are being used or the RMI host name must be specified, use the optional setting java.rmi.server.hostname. This is the hostname that the Oracle client needs to communicate back to the RMI server . Setting this incorrectly will result in an error on the client. If commented out then the Java API call InetAddress.getLocalHost().getHostName() will be used to get the hostname.
# java.rmi.server.hostname = localhost
Set task_manager.n_threads to the size of the thread pools used to service tasks and batch jobs. Note that because of other concurrency constraints the cartridge may not be able to service this number of tasks simultaneously.
task_manager.n_threads = 4
Set structure_search.use_molecule cache to true to use the molecule cache for substructure search.
structure_search.use_molecule_cache = true
OE molecules can be cached as compressed OEDBMols or uncompressed OEMiniMols. Set molecule_cache.use_compression = true to use compressed OEDBMols for structures (the recommended setting). OEMiniMols take up much space than OEDBMols, but they do store reaction information. Even with compression set OEMiniMols will be used for reactions.
molecule_cache.use_compression = true
The size of the LRU molecule cache is set in molecule_cache.cache_size. Using a size that exceeds physical memory of the server will degrade performace. Note that cache size chosen must account for the additional memory size of the system and other processes.
molecule_cache.cache_size = 500000
A thread pool dedicated to substructure search may be enabled using the following parameter:
structure_search.use_substructure_thread_pool = true
The number of threads in the aforementioned substructure search thread pool is set by the following entry. The number of threads in the substructure search thread pool should be at least 2 and no more than the number of processor cores on the RMI machine. Atom by atom matches in substructure search are then distributed among all the threads in the pool. So if an RMI server has 4 processors and a substructure search thread pool of size 4, non-concurrent substructure searches will run about 4 times as fast as when the pool is not enabled (assuming that there are no other intensive processes running). Note that the pool is shared between all current substructure searches, so if two searches are running concurrently on a substructure search thread pool of size 4, each search will access on average two threads and run twice as fast as when the pool is not enabled.
substructure_search_thread_pool.n_threads = 4
A similar thread pool is available for the creation of structure indexes. It is enabled by the following parameter:
table_index.use_index_build_thread_pool = true
In this case fingerprint creation is distributed among all the threads in the pool. This strategy is effective for SMILES columnns where a thread pool size of 4 will typically reduce the index creation by a factor of 4. For columns containing MDL MOL or OEBinary entries, a performance boost is not normally observed since the RMI server is limited by the rate at which the Oracle server can send data. Note that this thread pool is shared between all current structure index builds.
index_build_thread_pool.n_threads = 4
The next three keys specify the database and password for the C$ARNACHM1 user. If the host setting is commented out the server will attempt to load the OCI driver- otherwise the thin driver will be used. The thin driver is marginally slower than the OCI driver. The database setting for the thin driver is the Oracle SID of the database, while the database setting for the OCI driver is the database name defined in the Oracle TNS listener.
credentials.password = secret credentials.database = DB_NAME credentials.host = db_name.company.com credentials.port = 1521
The RMI server can pre-load indexes on startup (otherwise indexes will not be loaded until a search is requested or an alter index command is issued). The key table_index.load_tables is used to specify indexes to be loaded into memory from their saved Oracle state. Any index which doesn’t currently exist will be ignored.
table_index.load_tables = arnachm1_test.nci_open.smiles
For a pre-loaded index all molecules can be added to the molecule_cache using the key table_index.cache.<index_name>. The cache size should be sufficient to accommodate all the compounds in the index.
table_index.cache.arnachm1_test.nci_open.smiles = true
If the RMI server is not on the same host as Oracle then any firewall on the RMI server should be disabled. RMI connections occur on the first available port.