Accessing a remote JNDI in Spring

java, jndi, spring

Solution

You could use, for example, the JndiObjectFactoryBean class within a basic configuration like this one:

<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="yourLookupNameGoesHere" />
        <property name="jndiEnvironment">
            <props>
                <prop key="java.naming.provider.url">yourRemoteServerGoesHere:PortGoesHere</prop>
                <prop key="java.naming.factory.initial">yourNamingContextFactoryGoesHere</prop>
                <prop key="java.naming.factory.url.pkgs">yourPackagePrefixesGoHere</prop>
                <!-- other key=values here -->
            </props>
        </property>
        <!-- other properties here-->
    </bean>

You can then specify other environment properties as needed and you can also simplify your configuration by using the Spring jee schema.

Problem

I was wondering how one would go about getting an object from a remote JNDI in Spring 3. Where do you specify the URL, how do you set it all up in a context file, etc. I have found some disperate information suggesting this is possible, but no singular source for how to do it for a JNDi that is on a different server.

Original source