Решение связано с неправильным использованием DataSourceBuilder, который не должен использоваться для источника данных JNDI.
Вот как я его получил: (развертывание весенней загрузки на weblogic и использование источников данных, определенных вweblogic)
Сначала мы указываем источники данных, определенные в weblogic - здесь мы указываем имя JNDI источников данных, определенных в weblogic:
spring.datasource.xyz.jndi-name=XYZDS
spring.datasource.test.jndi-name=TESTDS
Здесь источник данных создается с использованием определенных выше свойстви выставлено: Мы внедряем свойства из application.properties в строковые переменные для хранения имен источников данных JNDI.
@Configuration
public class DataSourceConfig {
@Value( "${spring.datasource.xyz.jndi-name}" )
private String xyzJndiName;
@Value( "${spring.datasource.test.jndi-name}" )
private String testJndiName;
@Bean(name = "XyzDataSource")
public DataSource getXyzDataSource() throws Exception {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
return dataSourceLookup.getDataSource(xyzJndiName);
}
@Bean(name = "TestDataSource")
public DataSource getTestDataSource() throws Exception {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
return dataSourceLookup.getDataSource(testJndiName);
}
Несколько ключевых моментов, на которые следует обратить внимание: Мы не должны использовать 'DataSourceBuilder' для источника данных JNDI - он не будет работать.
По этой причине он не работал в моем случае.
Теперь я использую ' JndiDataSourceLookup ', который делает свое дело.
Еще одна вещь, на которую следует обратить внимание, это то, что нам нужно использовать стандартный аннотат @BeanИон с атрибутом «имя».
Это будет важно в части кода, которая использует этот источник данных.Итак, теперь источники данных созданы успешно и предоставлены.
ОК время для использования:
@Repository
public class SomeDaoImpl {
@Autowired
@Qualifier("XyzDataSource")
DataSource dataSource;
@Override
public List <String> create(Employee request) {
Connection conn = null;
conn = dataSource.getConnection();
Здесь мы используем аннотацию @ Qualifier , чтобы подобрать соответствующий источник данных.Вот и все - теперь это работает.Я попробовал это с другим источником данных - это также сработало.
ПРИМЕЧАНИЕ: Я не хотел бы принимать свой собственный ответ - поэтому я подожду пару дней, если кто-нибудь ещеесть лучшее и более элегантное решение, пожалуйста, ответьте - будем рады принять ваш ответ, а не отвечать на мой собственный вопрос и принимать!