Я прочитал много веток об этой проблеме, но пока не смог ее исправить.У меня есть эта ошибка
Caused by: javax.naming.NameNotFoundException: Name [jdbc/dbName] not bound to this context
У меня есть tomcat 8.5 server.xml:
<GlobalNamingResources>
<Resource auth="Container"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
name="UserDatabase"
pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
maxActive="10"
maxIdle="5"
maxWait="-1"
name="jdbc/dbName"
password="12345"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1234)) (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1234)) (LOAD_BALANCE = yes)(CONNECT_DATA =(SERVICE_NAME = ABCDEF) (FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC))))"
username="abcdef" />
У меня есть класс main.java.DataConfig
в первом приложении под названием "framework":
@Configuration
@EnableTransactionManagement
@MapperScan("main.java.mapper")
public class DataConfig {
@Autowired
private ResourceLoader resourceLoader;
/**
* dataSource
* @return
*/
@Bean(destroyMethod = "")
public DataSource dataSource() {
JndiDataSourceLookup jndi = new JndiDataSourceLookup();
return jndi.getDataSource("java:comp/env/jdbc/dbName");
}
...
Я упаковываю это приложение как войну и устанавливаю его как наложение для другого приложения.Таким образом, в этом приложении у меня есть файл META-INF / context.xml, подобный следующему:
<Context>
<ResourceLink global="jdbc/dbName"
type="javax.sql.DataSource"
name="jdbc/dbName" />
</Context>
Приложение прекрасно работает с Maven, и требуемая зависимость хорошо упакована в войне, однако приложение не можетнайдите GlobalNamingResource
"dbName".
Теперь, если я добавлю GlobalNamingResource
в context.xml в Tomcat, источник данных будет найден, и все будет нормально.
Но я не хочу(и не могу) изменить context.xml сервера, поэтому я хочу получить источник данных и оставить его как есть в server.xml.Как добиться успеха?
Спасибо за помощь.