Hello,
I have downloaded the equinox aspectj extension and integrated into
eclipse
how it is mentioned in the user guide.
The hello world aspectj example works great for me. I can dynamically
start
and stop the aspectj service and the classes seam to be reloading at
run-time.
I have zipped the folders org.aspectj.runtime_1.6.1.20080703120000 and
org.aspectj.weaver_1.6.1.20080703120000 (project
org.eclipse.equinox.weaving.demo.target) from the example to two jar
files
and copied it to the eclipse plugins directory. I reloaded the target
platform, so the plugins are considered.
After playing with some examples, I tried to integrate aspects into our
eclipse product which is based on 3.4.1. I have created a config.ini
(modified the prebaked config.ini of eclipse export mechanism) which
looks
like this one:
# default start level for the bundles
osgi.bundles.defaultStartLevel=4
osgi.bundles=org.eclipse.equinox.common@2\:start,
org.eclipse.update.configurator@3\:start, org.eclipse.core.runtime@start,
org.eclipse.equinox.weaving.aspectj@start,
org.eclipse.equinox.weaving.caching.j9@start,
org.eclipse.equinox.weaving.caching@2\:start, com.ibm.icu, [our bundles],
org.apache.log4j,org.aspectj.runtime,org.aspectj.weaver,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.expressions,org.eclipse.core.jobs,org.eclipse.core.runtime.compatibility.auth,org.eclipse.equinox.app,org.eclipse.equinox.event,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.equinox.weaving.aspectj,org.eclipse.equinox.weaving.caching,org.eclipse.equinox.weaving.caching.j9,org.eclipse.equinox.weaving.hook,org.eclipse.help,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.osgi.services,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.ui,org.eclipse.ui.workbench,org.junit,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86
#osgi.configuration.cascaded=false
osgi.clean=true
# AOSGi
osgi.framework.extensions=org.eclipse.equinox.weaving.hook
aj.weaving.verbose=true
org.aspectj.weaver.showWeaveInfo=true
org.aspectj.osgi.debug=true
After configuring it there are two problems:
1. If I start the product configuration via eclipse, I can see following
in
the osgi console after running ss:
4 <<LAZY>> org.eclipse.equinox.weaving.aspectj_1.0.0.200808061839
5 <<LAZY>> org.eclipse.equinox.weaving.caching.j9_1.0.0.200808061839
The two bundles for aspectj are not active after starting the osgi
platform.
I donĀ“t know why! Something prevents loading the aspectj bundles. My
presumption is that the required bundles
org.aspectj.runtime_1.6.1.20080703120000.jar and
org.aspectj.weaver_1.6.1.20080703120000.jar are loaded to late from the
org.eclipse.update.configurator which loads all bundles from the plugins
directory. Or anyboday think there is another problem?
After starting the two bundles manually with start [bundle-ids], my trace
aspect which traces method calls is working for this session. But how I
can
deactivate it during runtime? I made a stop for the bundle 4
(org.eclipse.equinox.weaving.aspectj_1.0.0.200808061839) and the main
Activator of our application will be stopped!!! I thought I can
dynamically
start and stop the aspect bundle?
Another approach was to stop the bundle with the compiled aspect inside.
But
it does not work, too. The tracing still is working. I think, the aspect
is
cached... Can I prevent this?
2. I made a shutdown of the ogsi plattform and there are two different
situations.
2.1 If I restart the product WITHOUT the parameter osgi.clean=true, the
needed bundles are started:
4 ACTIVE org.eclipse.equinox.weaving.aspectj_1.0.0.200808061839
5 ACTIVE org.eclipse.equinox.weaving.caching.j9_1.0.0.200808061839
6 ACTIVE org.eclipse.equinox.weaving.caching_1.0.0.200808061839
My bundle with the aspect is also active. But I get severeal messages on
console which are like this one: "Info no configuration found. Disabling
weaver for bundler [...]".
I think, the aspect in one of my bundles cannot be found. At all, the
trace
aspect does not work!
2.2 If I restart the product WITH the parameter osgi.clean=true, I have
the
same situation as mentioned under point 1! The required bundles are not
loaded...
What does it mean to me? I have always to start the osgi platform with
osgi.clean=true, so in this case I cannot have the advantage of osgi
caching. At all, we cannot rely on the equinox aspects. Maybe somebody
can
help me to fix the problem.
Thanks,
Jens Goldhammer
fme AG