Хорошо - Вы не будете в состоянии сделать это серверная сторона на обратной передаче, поскольку файл будет отправлен (загруженный) во время обратной передачи.
я думаю, что можно быть в состоянии сделать это на клиенте, использующем JavaScript. Лично, я использую сторонний компонент, названный radUpload Telerik. Это имеет хороший API клиентской и серверной стороны, и это обеспечивает индикатор выполнения для больших загрузок файла.
я уверен, что существуют доступные решения с открытым исходным кодом, также.
Просто используйте необработанный поиск JNDI:
public void setDataSourceName(String name) {
InitialContext ctx = new InitialContext();
jdbcTemplate = new JdbcTemplate((DataSource) ctx.lookup(name));
}
Не знаю, зачем вам это нужно, но ... вы можете найти источник данных JDNI с помощью Spring JndiDataSourceLookup
:
JndiDataSourceLookup lookup = new JndiDataSourceLookup();
lookup.setResourceRef(true); // if the lookup occurs in a J2EE container
DataSource ds = lookup.getDataSource(jndiName);
Или просто выполните поиск вручную, используя Классы Sun:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/AcmeDB");
Затем просто передайте ссылку на источник данных конструктору JdbcTemplate
или вызовите setDataSource (ds)
.
Но, как я уже сказал, я понятия не имею, почему вы не хотите использовать инъекцию.
Вот пример кода из написанного мной проекта:
SimpleJdbcTemplate db;
DataSource dataSource = new SingleConnectionDataSource(System.getProperty(
"lingcog.db.connectstring"),
System.getProperty("lingcog.db.username"),
System.getProperty("lingcog.db.password"), false);
db = new SimpleJdbcTemplate(dataSource);
Возможно, мой код был бы проще, если бы я использовал инъекцию, но это хороший пример как сделать это без использования инъекции.
Вы можете использовать объект org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup
, чтобы найти нужный источник данных по имени JDNI.
DataSource dataSource = new JndiDataSourceLookup().getDataSource("java:/TheOracleDS")
SimpleJdbcTemplate db=new SimpleJdbcTemplate(dataSource);