private ClassLoader createParentClassLoader(URI parentClassLoaderId, URI id) { ClassLoader cl = classLoaderRegistry.getClassLoader(parentClassLoaderId); return new MultiParentClassLoader(id, cl); }
public Class<?> defineClass(String name, byte[] bytes) throws ClassFormatError { return defineClass(name, bytes, 0, bytes.length); }
public ClassLoader getWebComponentClassLoader(URI componentId) { return classLoaderRegistry.getClassLoader(componentId); }
public ClassLoader getNewTempClassLoader() { if (!(classLoader instanceof MultiParentClassLoader)) { return null; } MultiParentClassLoader original = (MultiParentClassLoader) classLoader; MultiParentClassLoader newClassLoader = new MultiParentClassLoader(URI.create("f3-temp"), original.getParent()); for (ClassLoader parent : original.getParents()) { newClassLoader.addParent(parent); } for (URL url : original.getURLs()) { newClassLoader.addURL(url); } return newClassLoader; }
public void build(MultiParentClassLoader source, PhysicalClassLoaderWireDefinition wireDefinition) { URI uri = wireDefinition.getTargetClassLoader(); ClassLoader target = registry.getClassLoader(uri); if (target == null) { throw new AssertionError("Target classloader not found: " + uri); } String packageName = wireDefinition.getPackageName(); if (packageName != null) { ClassLoader filter = new ClassLoaderWireFilter(target, packageName); source.addParent(filter); } else { source.addParent(target); } } }
@Init public void init() { MultiParentClassLoader jndiClassLoader = (MultiParentClassLoader) registry.getClassLoader(URI.create("f3-jndi")); if (jndiClassLoader == null) { return; } MultiParentClassLoader extensionClassLoader = (MultiParentClassLoader) getClass().getClassLoader(); extensionClassLoader.getParents().forEach(jndiClassLoader::addParent); } }
private void buildCommonClassLoaderEnvironment(PhysicalClassLoaderDefinition definition) { URI uri = definition.getUri(); // Create an alias to the host classloader which contains all contribution artifacts in a non-isolated environment. // This simulates multiple classloaders ClassLoader hostClassLoader = classLoaderRegistry.getClassLoader(HOST_CONTRIBUTION); classLoaderRegistry.register(uri, hostClassLoader); }
public void execute(DetachExtensionCommand command) throws ExecutionException { if (!info.supportsClassLoaderIsolation()) { return; } URI contributionUri = command.getContribution(); URI providerUri = command.getProvider(); // note: casts are safe as all extension and provider classloaders are multi-parent MultiParentClassLoader contributionCl = (MultiParentClassLoader) classLoaderRegistry.getClassLoader(contributionUri); MultiParentClassLoader providerCl = (MultiParentClassLoader) classLoaderRegistry.getClassLoader(providerUri); contributionCl.removeExtensionClassLoader(providerCl); } }
public void execute(AttachExtensionCommand command) throws ExecutionException { if (!info.supportsClassLoaderIsolation()) { return; } URI contributionUri = command.getContribution(); URI providerUri = command.getProvider(); // note: casts are safe as all extension and provider classloaders are multi-parent MultiParentClassLoader contributionCl = (MultiParentClassLoader) classLoaderRegistry.getClassLoader(contributionUri); MultiParentClassLoader providerCl = (MultiParentClassLoader) classLoaderRegistry.getClassLoader(providerUri); contributionCl.addExtensionClassLoader(providerCl); } }
private ClassLoader createParentClassLoader(ClassLoader classLoader, URI id) { MultiParentClassLoader parentClassLoader = new MultiParentClassLoader(id, classLoader); // we need to make user and web container extensions available for JSP compilation parentClassLoader.addParent(getClass().getClassLoader()); return parentClassLoader; }
public byte[] serialize(Serializable serializable) throws IOException { ByteArrayOutputStream bas = new ByteArrayOutputStream(); MultiClassLoaderObjectOutputStream stream; stream = new MultiClassLoaderObjectOutputStream(bas); stream.writeObject(serializable); stream.close(); return bas.toByteArray(); }
/** * Returns the contribution URI for the current context. In non-managed environments, {@link Names#HOST_CONTRIBUTION} will be returned. * * @return the contribution URI. */ public static URI getContribution() { if (Thread.currentThread().getContextClassLoader() instanceof MultiParentClassLoader) { return ((MultiParentClassLoader) Thread.currentThread().getContextClassLoader()).getName(); } else { return Names.HOST_CONTRIBUTION; } }
private byte[] serialize(Serializable serializable) throws ContainerException { try { ByteArrayOutputStream bas = new ByteArrayOutputStream(); MultiClassLoaderObjectOutputStream stream = new MultiClassLoaderObjectOutputStream(bas); stream.writeObject(serializable); return bas.toByteArray(); } catch (IOException e) { throw new ContainerException(e); } } }
public Class<?> transform(String source, ClassLoader loader) throws TransformationException { try { return classLoaderRegistry.loadClass(loader, source); } catch (ClassNotFoundException e) { throw new TransformationException(e); } }
/** * Returns the contribution URI for the current context. In non-managed environments, {@link Names#HOST_CONTRIBUTION} will be returned. * * @return the contribution URI. */ public static URI getContribution() { if (Thread.currentThread().getContextClassLoader() instanceof MultiParentClassLoader) { return ((MultiParentClassLoader) Thread.currentThread().getContextClassLoader()).getNameUri(); } else { return Names.HOST_CONTRIBUTION; } }
private SerializedDeploymentUnit createSerializedUnit(DeploymentUnit deploymentUnit) throws IOException { List<CompensatableCommand> provisionCommands = deploymentUnit.getProvisionCommands(); byte[] serializedProvisionCommands = serializationService.serialize((Serializable) provisionCommands); List<CompensatableCommand> extensionCommands = deploymentUnit.getExtensionCommands(); byte[] serializedExtensionCommands = serializationService.serialize((Serializable) extensionCommands); List<CompensatableCommand> commands = deploymentUnit.getCommands(); byte[] serializedCommands = serializationService.serialize((Serializable) commands); return new SerializedDeploymentUnit(serializedProvisionCommands, serializedExtensionCommands, serializedCommands); } }
public ClassLoader getNewTempClassLoader() { if (!(classLoader instanceof MultiParentClassLoader)) { return null; } MultiParentClassLoader original = (MultiParentClassLoader) classLoader; MultiParentClassLoader newClassLoader = new MultiParentClassLoader(URI.create("f3-temp"), original.getParent()); for (ClassLoader parent : original.getParents()) { newClassLoader.addParent(parent); } for (URL url : original.getURLs()) { newClassLoader.addURL(url); } return newClassLoader; }
/** * Returns the contribution URI for the current context. In non-managed environments, {@link Names#HOST_CONTRIBUTION} will be returned. * * @return the contribution URI. */ public static URI getContribution() { if (Thread.currentThread().getContextClassLoader() instanceof MultiParentClassLoader) { return ((MultiParentClassLoader) Thread.currentThread().getContextClassLoader()).getName(); } else { return Names.HOST_CONTRIBUTION; } }
public Class<?> transform(Node node, ClassLoader loader) throws TransformationException { try { return classLoaderRegistry.loadClass(loader, node.getTextContent()); } catch (ClassNotFoundException e) { throw new TransformationException(e); } } }
public ClassLoader getNewTempClassLoader() { if (!(classLoader instanceof MultiParentClassLoader)) { return null; } MultiParentClassLoader original = (MultiParentClassLoader) classLoader; MultiParentClassLoader newClassLoader = new MultiParentClassLoader(URI.create("f3-temp"), original.getParent()); for (ClassLoader parent : original.getParents()) { newClassLoader.addParent(parent); } for (URL url : original.getURLs()) { newClassLoader.addURL(url); } return newClassLoader; }