cool!
I test it with the trunk version 3.1.0-SNAPSHOT
and it works for me, now the application could be used more than 15 times!!
Thanks a lot

2010/6/17 Karl Pauls <karlpa...@gmail.com>

> Clement and me did debug this issue further and it is related to the
> implicit bootdelegation in felix. We have a fix for it which is
> commited to trunk now. I opened FELIX-2421 to track this. Please test
> it with the current trunk and let us know whether it works for you.
>
> regards,
>
> Karl
>
> 2010/6/17 Issac Noé García <is...@torito.org>:
> > Thanks a lot  Stuart, Clement
> >
> > for your explanation and the solution meanwhile is solved in iPOJO,
> Felix,
> > or Java :-D
> >
> >
> > 2010/6/17 Stuart McCulloch <mccu...@gmail.com>
> >
> >> On 17 June 2010 15:52, Clement Escoffier <clement.escoff...@gmail.com
> >> >wrote:
> >>
> >> > Hello,
> >> >
> >> > On 17.06.2010, at 09:29, Stuart McCulloch wrote:
> >> >
> >> > > 2010/6/17 Issac Noé García <is...@torito.org>
> >> > >
> >> > >> Hi, this is my first post here,
> >> > >> I have a bug I can solve :(
> >> > >> The context:
> >> > >> The platform: I'm using iPOJO 1.6.2, Felix 2.0.5, Jetty 1.0.1,
> XMLRPC
> >> or
> >> > >> JsonRPC
> >> > >> The application :
> >> > >> I have two iPOJO components (service-exporter and real-service)
> >> > >> service-exporter requires the real-service and expose it as a Json
> RPC
> >> > >> service.
> >> > >>
> >> > >> Its a simple application the real-service is like a "hello
> >> > world"example.
> >> > >> And I use a frontend using jscript to call the json service, and
> >> > everything
> >> > >> is OK, but only 15 calls!!  I need to update the bundle to have it
> >> > running
> >> > >> again (another 15 calls)
> >> > >> Later, I changed the JSON RPC exporter for an XMLRPC exporter to
> see
> >> if
> >> > it
> >> > >> was an Jabsorb problem. but it throws the exception after 15
> services
> >> > calls
> >> > >> too.
> >> > >>
> >> > >> Someone has an idea about what its happening here?
> >> > >>
> >> > >
> >> > > it's a proxy classloader issue, we encountered the same thing with
> >> Guice
> >> > a
> >> > > while ago:
> >> > >
> >> > >   http://code.google.com/p/google-guice/issues/detail?id=417
> >> > >
> >> > > basically the issue is that after ~15 method calls the Sun JDK proxy
> >> code
> >> > > switches
> >> > > from using native reflection to a generated class (the class is
> better
> >> > for
> >> > > JIT compiling
> >> > > but it takes longer to create than a few native reflection calls,
> hence
> >> > the
> >> > > threshold)
> >> >
> >> > Do you know if it's related to:
> >> > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6265952
> >> >
> >>
> >> yep, nice to see they accepted it as a bug in 2005 but still haven't
> fixed
> >> it ;)
> >>
> >> it's a nasty issue because it only shows up after a certain
> call-threshold
> >>
> >>
> >> > >
> >> > > to make this switch the proxy instance needs access to the
> >> "sun.reflect"
> >> > > classes,
> >> > > which are usually available from the boot classloader via parent
> >> > delegation
> >> > > - but if
> >> > > the proxy instance was created by an OSGi bundle then it could end
> up
> >> > using
> >> > > the
> >> > > bundle's classloader (depending on the type being proxied)
> >> > >
> >> > > this is where it gets problematic - if the proxy is using a bundle
> >> > > classloader and
> >> > > that bundle doesn't import "sun.reflect" then it won't be able to
> see
> >> > this
> >> > > package
> >> > > and you get that exception... and the bundle typically won't import
> >> > > "sun.reflect"
> >> > > as it's a hidden JVM implementation issue
> >> > >
> >> > > so what to do? for Guice we already use a custom (bridge)
> classloader
> >> for
> >> > > bundle
> >> > > created proxies, so we simple added a shortcut to load any
> >> "sun.reflect"
> >> > > classes
> >> > > via the system classloader - maybe iPOJO could so something similar?
> >> >
> >> > Definitely, just opened
> https://issues.apache.org/jira/browse/FELIX-2416
> >> >
> >> >
> >> > Regards,
> >> >
> >> > Clement
> >> >
> >> > >
> >> > > otherwise there is a simple workaround, which is to set this
> framework
> >> > > property:
> >> > >
> >> > >   org.osgi.framework.bootdelegation=sun.reflect
> >> > >
> >> > > in the Felix configuration file - then all bundles will be able to
> see
> >> > the
> >> > > "sun.reflect"
> >> > > package without having to import it (some use a wider pattern of
> >> > > "sun.*,com.sun.*")
> >> > >
> >> > > HTH
> >> > >
> >> > > the trace exception is here:
> >> > >>
> >> > >> java.lang.NoClassDefFoundError: sun/reflect/MethodAccessorImpl
> >> > >> at sun.misc.Unsafe.defineClass(Native Method)
> >> > >> at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
> >> > >> at
> >> > >>
> >> >
> >>
> sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
> >> > >> at java.security.AccessController.doPrivileged(Native Method)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >> > >> at java.lang.reflect.Method.invoke(Method.java:597)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
> >> > >> at
> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:112)
> >> > >> at
> >> >
> org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:196)
> >> > >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> >> > >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >> > >> at
> >> > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.mortbay.jetty.servlet.OsgiServletHolder.handle(OsgiServletHolder.java:101)
> >> > >> at
> >> > >>
> >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.mortbay.jetty.servlet.OsgiServletHandler.handle(OsgiServletHandler.java:117)
> >> > >> at
> >> > >>
> >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> >> > >> at
> >> >
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> >> > >> at
> >> > >>
> >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >> > >> at org.mortbay.jetty.Server.handle(Server.java:324)
> >> > >> at
> >> >
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
> >> > >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
> >> > >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
> >> > >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
> >> > >> Caused by: java.lang.ClassNotFoundException:
> >> > sun.reflect.MethodAccessorImpl
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:814)
> >> > >> at
> >> org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1733)
> >> > >> at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >> > >> at
> >> > >>
> >> > >>
> >> >
> >>
> org.apache.felix.ipojo.handlers.dependency.Dependency$SmartProxyFactory.loadClass(Dependency.java:900)
> >> > >> ... 33 more
> >> > >>
> >> > >> --
> >> > >> Issac Noé García Garza
> >> > >>
> >> > >
> >> > > --
> >> > > Cheers, Stuart
> >> >
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >> > For additional commands, e-mail: users-h...@felix.apache.org
> >> >
> >>
> >> --
> >> Cheers, Stuart
> >>
> >
> >
> >
> > --
> > Issac Noé García Garza
> >
>
>
>
> --
> Karl Pauls
> karlpa...@gmail.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
>
>


-- 
Issac Noé García Garza

Reply via email to