С помощью Spring SimpleNamingContextBuilder и Apache BasicDataSource вы можете сделать что-то вроде этого (у меня обычно это в статическом блоке в тестовых классах, которым требуется JNDI):
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(db_driver_name);
dataSource.setUrl(db_connection_url);
dataSource.setUsername(db_username);
dataSource.setPassword(db_password);
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind(jndi_name, dataSource);
builder.activate();
Значение jndi_name
может выглядеть следующим образом: java:comp/env/jdbc/my-db
Как только это настроено, код, который обычно ищет соединение с базой данных через JNDI, должен работать. Приведенный выше код, например, будет работать с этой конфигурацией Spring:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/my-db"/>
</bean>