Доброе утро в моем часовом поясе
У меня уже есть два вопроса о переполнении стека:
Spring Boot с использованием встроенного Tomcat с JNDI
и
Как использовать соединение с базой данных JNDI с Spring Boot и Spring Data с использованием встроенного Tomcat?
И ни одна из них не сработала.Я использую Spring Boot 2. Я хочу настроить встроенный Tomcat Server для работы с JNDI.У меня есть попытка подходов:
Фрагмент кода:
@SpringBootApplication
public class MyApplication {
public static void main ...
@Bean
public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("jdbc/CCC");
resource.setType(DataSource.class.getName());
resource.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
resource.setProperty("url", "jdbc:oracle:thin:@a77k11111188.tt.ddd.test:3000:BHJR00TT00");
resource.setProperty("username", "user");
resource.setProperty("password", "pass");
context.getNamingResources().addResource(resource); }
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat){
tomcat.enableNaming();
TomcatWebServer container = super.getTomcatWebServer(tomcat);
for(Container child :container.getTomcat().getHost().findChildren()){
if (child instanceof Context) {
ClassLoader contextClassLoader = ((Context)child).getLoader().getClassLoader();
Thread.currentThread().setContextClassLoader(contextClassLoader);
break;
}
}
return container; }
}; return tomcat;
An затем использовать application.properties
spring.datasource.jndi-name=java:comp/env/jdbc/CCC
Журнал ошибок: не удается запустить встроенный Tomcat
Ошибка создания компонента с именем 'servletEndpointRegistrar'
Ошибка создания компонента с именем 'dataSource' DataSourceLookupFailureException: Не удалось найти источник данных JNDI с именем 'java: comp / env / jdbc / CCC'
.NamingException: не удалосьсоздать экземпляр фабрики ресурсов
ClassNotFoundException: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory
Вместо этого, если я не использую свойства приложения и настраиваю боб источника данных непосредственно в Spring Boot Application, какthis
@Bean(destroyMethod = "")
public DataSource jndiDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("java:comp/env/jdbc/CCC");
bean.setProxyInterface(DataSource.class);
bean.setLookupOnStartup(false);
bean.afterPropertiesSet();
return (DataSource) bean.getObject();
}
Журнал ошибок
UnsatisfiedDependencyException: Ошибка создания бина с именем entityManagerFactory
BeanCreationException: Ошибка создания бина с именем 'jpaVendorAdapter'
JndiLookupFargeiTourceBjectполучить новый целевой объект
NamingException: Не удалось создать экземпляр фабрики ресурсов
В моем pom у меня есть следующие зависимости
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
У меня нет решений Заранее спасибо С уважением