[
https://issues.apache.org/jira/browse/FELIX-2197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Zdila updated FELIX-2197:
--------------------------------
Description:
Please implement something like Equinox's
org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook. We need it for running
Felix under Terracotta (there is HOWTO for Equinox:
http://www.terracotta.org/confluence/display/wiki/Run+with+Eclipse+Equinox).
We patched the Felix Framework for the workaround. The patch is attached. We
use it like this:
...
import org.apache.felix.framework.ClassLoaderHook;
import org.apache.felix.framework.Felix;
import com.tc.object.bytecode.hook.impl.ClassProcessorHelper;
import com.tc.object.loaders.NamedClassLoader;
...
final Properties properties = new Properties();
...
properties.put("classLoaderHook", new ClassLoaderHook() {
@Override
public void classLoaderCreared(final ClassLoader classLoader) {
if (classLoader instanceof NamedClassLoader) {
((NamedClassLoader)
classLoader).__tc_setClassLoaderName(classLoader.toString());
ClassProcessorHelper.registerGlobalLoader((NamedClassLoader) classLoader, null);
}
}
});
return new Felix(properties);
...
Thanks in advance.
was:
Please implement something like Equinox's
org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook. We need it for running
Felix under Terracotta (there is HOWTO for Equinox:
http://www.terracotta.org/confluence/display/wiki/Run+with+Eclipse+Equinox).
We patched the Felix Framework for the workaround. The patch is attached. We
use it like this:
...
import org.apache.felix.framework.ClassLoaderHook;
import org.apache.felix.framework.Felix;
import com.tc.object.bytecode.hook.impl.ClassProcessorHelper;
import com.tc.object.loaders.NamedClassLoader;
...
properties.put("classLoaderHook", new ClassLoaderHook() {
@Override
public void classLoaderCreared(final ClassLoader
classLoader) {
if (!(classLoader instanceof NamedClassLoader))
{
return;
}
System.out.println(classLoader.toString());
((NamedClassLoader)
classLoader).__tc_setClassLoaderName(classLoader.toString());
ClassProcessorHelper.registerGlobalLoader((NamedClassLoader) classLoader, null);
}
});
return new Felix(properties);
...
Thanks in advance.
slight simplification of the usecase example
> Please implement something like Equinox's
> org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook
> ---------------------------------------------------------------------------------------------
>
> Key: FELIX-2197
> URL: https://issues.apache.org/jira/browse/FELIX-2197
> Project: Felix
> Issue Type: New Feature
> Components: Framework
> Affects Versions: felix-2.0.4
> Environment: irrelevant
> Reporter: Martin Zdila
> Attachments: framework.patch
>
>
> Please implement something like Equinox's
> org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook. We need it for running
> Felix under Terracotta (there is HOWTO for Equinox:
> http://www.terracotta.org/confluence/display/wiki/Run+with+Eclipse+Equinox).
> We patched the Felix Framework for the workaround. The patch is attached. We
> use it like this:
> ...
> import org.apache.felix.framework.ClassLoaderHook;
> import org.apache.felix.framework.Felix;
> import com.tc.object.bytecode.hook.impl.ClassProcessorHelper;
> import com.tc.object.loaders.NamedClassLoader;
> ...
> final Properties properties = new Properties();
> ...
> properties.put("classLoaderHook", new ClassLoaderHook() {
> @Override
> public void classLoaderCreared(final ClassLoader classLoader) {
> if (classLoader instanceof NamedClassLoader) {
> ((NamedClassLoader)
> classLoader).__tc_setClassLoaderName(classLoader.toString());
>
> ClassProcessorHelper.registerGlobalLoader((NamedClassLoader) classLoader,
> null);
> }
> }
> });
>
> return new Felix(properties);
> ...
> Thanks in advance.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.