felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: Bootdelegation and Java agent (AspectJ)
Date Wed, 08 Dec 2010 17:20:56 GMT

Ok, that reproduced the issue.

I updated your felix-launcher.jar to use Felix framework 3.0.6 since 
we've made changes to implicit boot delegation, so it makes more sense 
to work from 3.0.6 as a starting point.

I started getting errors for jlp.* classes. I added the jlp.* class to 
boot delegation, but this wasn't sufficient because for R4.2 the default 
class loader used for boot delegation has changed from the framework 
class loader (which was framework implementation specific) to the boot 
class loader. So, I also had the add "org.osgi.framework.bundle.parent 
app" to your gateway.properties to configure the framework to use the 
application class loader for boot delegation (I just guessed that this 
would be the correct class loader).

That got me past the jlp.* errors, but then I got errors because the 
org.apache.xerces.jaxp.SAXParserFactoryImpl provider could not be found. 
As a guess, I added this to the boot delegation property too, which got 
the server starting.

However, this still didn't solve the original issue, so I also added 
org.aspectj.* to the boot delegation property. This led me to another 
error, where the org.apache.xpath.jaxp.XPathFactoryImpl provider could 
not be found, so I added that to the boot delegation property too.

This got the admin console loading, but when I logged in I got an error 
because the org.apache.xalan.processor.TransformerFactoryImpl could not 
be found, so I added that to the boot delegation property.

Now everything appears to be working, since I was able to access the 
admin console and login. I'm not sure if you intended to get all of this 
stuff working via boot delegation or not. If not maybe this at least 
gives you enough hints about where to go next.

I'd definitely recommend moving to Felix framework 3.0.6 and to Gogo! :-)

-> richard

-> richard

On 12/8/10 8:34, Guillaume Sauthier wrote:
> Sorry for the delay Richard
> Can you try with export JAVA_OPTS=... instead of exporting JONAS_OPTS 
> (my latest try was with JAVA_OPTS and there was the failure) ?
> Make sure that the -javaagent parameter was really used (ps aux | grep 
> weaver)
> It's possible that you may need some more PermGenSpace to run theses 
> aspects:
> export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=256m"
> Thanks
> --G
> Le 06/12/2010 18:36, Richard S. Hall a écrit :
>> I'm on a Mac. I did this:
>>   1. export JONAS_ROOT=/Users/rsh/Projects/tmp/jonas-full-5.2.0-M3/
>>   2. export
>>      JONAS_OPTS="-javaagent:/Users/rsh/Downloads/myaspectjweaver.jar"
>>   3. ./bin/jonas start -clean -tui -debug -p 4142
>>   4. goto http://localhost:9000/jonasAdmin and login
>> I don't see any exception. This is the console output snippet after 
>> the server starts up and when I login to the admin console:
>> 2010-12-06 12:31:47,218 : J2EEServer.__info : JOnAS AS v5.2.0-M3 
>> named 'jonas' RUNNING
>> 2010-12-06 12:33:07,324 : WebappLoader.start : Dual registration of 
>> jndi stream handler: factory already defined
>> log4j:WARN No appenders could be found for logger 
>> (org.granite.config.GraniteConfigListener).
>> log4j:WARN Please initialize the log4j system properly.
>> 2010-12-06 12:33:11,493 : BaseWebContainerService.registerWar : War 
>> jonas-admin-5.2.0-M3.war available at the context /jonasAdmin.
>> When I login the admin console app comes up fine.
>> So, I must be missing a step.
>> -> richard
>> On 12/6/10 11:24, Guillaume Sauthier wrote:
>>> Yeah, the Exception is not thrown by the Felix framework, this is 
>>> normal because the searched class is not in the webapp.
>>> I was expecting the framework to actually find something.
>>> The  problem is not the Exception, it's more why the framework 
>>> didn't find the libs of the agent.
>>> To reproduce (I'm using JDK6):
>>> 1. Download JOnAS 5.2M3 
>>> (http://wiki.jonas.ow2.org/xwiki/bin/view/Main/Downloads)
>>> 2. Unzip
>>> 3. export JONAS_ROOT=<path-where-you-unziped-jonas>
>>> 4. export 
>>> JONAS_OPTS="-javaagent:<path-where-you-placed>/myaspectjweaver.jar" 
>>> (this jar is attached to the JOnAS Bug)
>>> 5. jonas start -clean -tui (Add "-debug -p 4142" if you want to 
>>> launch in debug mode)
>>> 6. Goto http://localhost:9000/jonasAdmin (the application server 
>>> start the webcontainer + the webapp)
>>> 7. Try to login (jonas/jonas)
>>> 8. You should see a stack trace (in both the webapp and the console)
>>> Hope this helps
>>> --Guillaume
>>> Le 06/12/2010 17:09, Richard S. Hall a écrit :
>>>> The exception isn't being thrown by the Felix framework, so I'd 
>>>> have to assume if it is involved, it must be the parent of the 
>>>> WebappClassLoader?
>>>> The information is not enough for me to reproduce the issue. If you 
>>>> want to give me detailed steps to reproduce, I can take a look.
>>>> -> richard
>>>> On 12/6/10 10:36, Guillaume Sauthier wrote:
>>>>> Hi all
>>>>> One of the JOnAS users has an issue with bootdelegation and an 
>>>>> AspectJ Java agent.
>>>>> All the details are here: http://jira.ow2.org/browse/JONAS-293
>>>>> In short, we start JOnAS with 
>>>>> -javaagent:<path-to>/weaver-and-aspects.jar
>>>>> We also changed the bootdelegation package list to include 
>>>>> "org.aspectj.*" and the aspect class packages ("jlp.*").
>>>>> So I expect the classes from the agent to be available from any 
>>>>> bundle on the system.
>>>>> And when the aspectized class is instanciated, we have this error:
>>>>> http://jonas.pastebin.com/ni8rcpvx (ClassNotFoundException: 
>>>>> org.aspectj.runtime.reflect.Factory)
>>>>> I tried the 3 different policies for bootdelegation 
>>>>> (org.osgi.frameword.bundle.parent=app/boot/ext) and there is no 
>>>>> changes with any of them.
>>>>> Any ideas ?
>>>>> --G
>>>>> PS: It works with JOnAS 5.1.5, that means with a Felix 1.8.1.
>>>>> JOnAS 5.2 M4-SNAPSHOT using Felix 3.0.4

View raw message