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