On Jul 8, 2010, at 8:54 PM, Jarek Gawor wrote: > On Tue, Jul 6, 2010 at 7:47 PM, David Jencks <[email protected]> wrote: >> I'm running into some problems with the proxies generated by the jndi >> implementation (ServiceHelper ~line 342). >> >> First of all, people sometimes register services under concrete classes >> rather than interfaces. Filtering these out of the standard java proxy >> creation will easily reduce the exceptions from this code: >> >> for (String interfaceName : interfaces) { >> try { >> Class<?> potentialClass = >> serviceProviderBundle.loadClass(interfaceName); >> //new check that class is actually an interface: >> if (potentialClass.isInterface() && >> pair.ref.isAssignableTo(owningBundle, interfaceName)) { >> clazz.add(potentialClass); >> } >> } catch (ClassNotFoundException e) { >> } >> } >> >> >> Secondly, I recall rumors that the blueprint implementation can make proxies >> to classes using asm or cglib. Would there be problems using that sort of >> code here in jndi so classes can actually be proxied? Anyone have a pointer >> to where the blueprint proxy code is? > > We can add class proxying support to the JNDI code. That should not be > a problem.
I have this working here... > >> Thirdly, there are some really badly designed services (javax.mail.Session) >> whose implementation class per spec is final but that need to be in an EE >> jndi context. Rather than making these totally inaccessible through osgi >> jndi could we simply return the service rather than creating a proxy? > > No, that would violate the OSGi JNDI spec. The Aries JNDI > implementation actually supports two url schemes for looking up > services via jndi: the standard one - "osgi:service/" and non-standard > one - "aries:services/". Right now both work in exactly the same way. > But we could modify things a bit so that when "aries:services/" scheme > it could return a non-proxied service object (when proxying fails). Good idea. I'll see about converting my patch to only return a non-proxied object if proxying fails and the aries: scheme is used. thanks! david jencks > > Jarek
