[ https://issues.apache.org/jira/browse/ARIES-572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jeremy Hughes updated ARIES-572: -------------------------------- Fix Version/s: jndi uber bundle 0.3.1 jndi.core-0.3.1 > NamingException in JMXConnectionFactory.connect() calls with JMX over RMI > calls > ------------------------------------------------------------------------------- > > Key: ARIES-572 > URL: https://issues.apache.org/jira/browse/ARIES-572 > Project: Aries > Issue Type: Bug > Components: JNDI > Affects Versions: 0.3, 0.4 > Reporter: Stephan Siano > Assignee: Alasdair Nottingham > Fix For: jndi.core-0.3.1, jndi uber bundle 0.3.1 > > Attachments: ObjectFactoryHelper.java.patch > > > I get a NamingException with the following bundle activator if aries-jndi is > present (I tried the current 0.4-SNAPSOT and 0.3): > public class Activator implements BundleActivator { > @Override > public void start(BundleContext bundleContext) throws Exception { > Map<String, Object> env = new HashMap<String, Object>(); > env.put("osgi.service.jndi.bundleContext", bundleContext); > JMXConnectorFactory.connect(new > JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1717/jmxrmi"), env); > } > @Override > public void stop(BundleContext arg0) throws Exception { > } > } > The bundle context in the environment is necessary to work around another > issue. > The NamingException is thrown by > com.sun.jndi.url.rmi.rmiURLContextFactory.getObjectInstance() if the first > parameter is not an URL. This method is called from > org.apache.aries.jndi.ObjectFactoryHelper.getObjectInstanceUsingObjectFactories(). > This method iterates over all registered ObjectFactories to check if there > is a better implementation than the one provided in the first argument, > however if it comes to Sun's object factory the NamingException occurs (and > will be propagated upwards) even though the proxy object that is already > there is actually fine. > Therefore I would propose the following change: > Index: src/main/java/org/apache/aries/jndi/ObjectFactoryHelper.java > =================================================================== > --- src/main/java/org/apache/aries/jndi/ObjectFactoryHelper.java > (revision 1068918) > +++ src/main/java/org/apache/aries/jndi/ObjectFactoryHelper.java > (working copy) > @@ -115,6 +115,7 @@ > > try { > result = factory.getObjectInstance(obj, name, > nameCtx, environment); > + } catch (NamingException e) { > } finally { > callerContext.ungetService(ref); > } > The empty catch block is needed because obviously some ObjectFactories throw > a NamingException instead of returning null in some circumstances. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira