mirror of
https://github.com/corda/corda.git
synced 2025-06-17 22:58:19 +00:00
Remove CordApps JARs from node classpath [CORDA-1135] (#2691)
This commit is contained in:
@ -81,8 +81,6 @@ public class CordaCaplet extends Capsule {
|
||||
T cp = super.attribute(attr);
|
||||
|
||||
(new File(baseDir, "cordapps")).mkdir();
|
||||
augmentClasspath((List<Path>) cp, new File(baseDir, "cordapps"));
|
||||
augmentClasspath((List<Path>) cp, new File(baseDir, "plugins"));
|
||||
// Add additional directories of JARs to the classpath (at the end). e.g. for JDBC drivers
|
||||
try {
|
||||
List<String> jarDirs = nodeConfig.getStringList("jarDirs");
|
||||
|
@ -639,7 +639,7 @@ abstract class AbstractNode(val configuration: NodeConfiguration,
|
||||
protected open fun initialiseDatabasePersistence(schemaService: SchemaService, identityService: IdentityService): CordaPersistence {
|
||||
val props = configuration.dataSourceProperties
|
||||
if (props.isEmpty()) throw DatabaseConfigurationException("There must be a database configured.")
|
||||
val database = configureDatabase(props, configuration.database, identityService, schemaService)
|
||||
val database = configureDatabase(props, configuration.database, identityService, schemaService, cordappLoader.appClassLoader)
|
||||
// Now log the vendor string as this will also cause a connection to be tested eagerly.
|
||||
logVendorString(database, log)
|
||||
runOnStop += database::close
|
||||
@ -874,7 +874,8 @@ internal class NetworkMapCacheEmptyException : Exception()
|
||||
fun configureDatabase(hikariProperties: Properties,
|
||||
databaseConfig: DatabaseConfig,
|
||||
identityService: IdentityService,
|
||||
schemaService: SchemaService = NodeSchemaService()): CordaPersistence {
|
||||
schemaService: SchemaService = NodeSchemaService(),
|
||||
cordappClassLoader: ClassLoader? = null): CordaPersistence {
|
||||
// Register the AbstractPartyDescriptor so Hibernate doesn't warn when encountering AbstractParty. Unfortunately
|
||||
// Hibernate warns about not being able to find a descriptor if we don't provide one, but won't use it by default
|
||||
// so we end up providing both descriptor and converter. We should re-examine this in later versions to see if
|
||||
@ -882,5 +883,5 @@ fun configureDatabase(hikariProperties: Properties,
|
||||
JavaTypeDescriptorRegistry.INSTANCE.addDescriptor(AbstractPartyDescriptor(identityService))
|
||||
val dataSource = DataSourceFactory.createDataSource(hikariProperties)
|
||||
val attributeConverters = listOf(AbstractPartyToX500NameAsStringConverter(identityService))
|
||||
return CordaPersistence(dataSource, databaseConfig, schemaService.schemaOptions.keys, attributeConverters)
|
||||
return CordaPersistence(dataSource, databaseConfig, schemaService.schemaOptions.keys, attributeConverters, cordappClassLoader)
|
||||
}
|
||||
|
@ -43,8 +43,7 @@ import kotlin.streams.toList
|
||||
*/
|
||||
class CordappLoader private constructor(private val cordappJarPaths: List<RestrictedURL>) {
|
||||
val cordapps: List<Cordapp> by lazy { loadCordapps() + coreCordapp }
|
||||
|
||||
internal val appClassLoader: ClassLoader = URLClassLoader(cordappJarPaths.stream().map { it.url }.toTypedArray(), javaClass.classLoader)
|
||||
val appClassLoader: ClassLoader = URLClassLoader(cordappJarPaths.stream().map { it.url }.toTypedArray(), javaClass.classLoader)
|
||||
|
||||
init {
|
||||
if (cordappJarPaths.isEmpty()) {
|
||||
|
Reference in New Issue
Block a user