java - JNDI 位置 [comp/env/test] 上可用的类型 [class java.util.Properties] 的对象不可分配给 [javax.sql.DataSource]
问题描述
我需要将 Spring MVC 应用程序连接到 oracle 数据库 throw Glassfish 服务器。
这是我的 MVCconfiguration.java
@Bean
public DataSource getDataSource() throws SQLException {
//Option 1 it works
//DriverManagerDataSource dataSource = new DriverManagerDataSource();
//dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
//dataSource.setUrl("jdbc:oracle:thin:@xxx.xx.xx.xx:1521:dtest");
//dataSource.setUsername("user");
//dataSource.setPassword("pass");
//Option 2 didn't work
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
DataSource dataSource = null;
JndiTemplate jndi = new JndiTemplate();
try {
dataSource = jndi.lookup("comp/env/test", DataSource.class);
} catch (NamingException e) {
}
//Option 3 didn't work
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = (DataSource) dataSourceLookup.getDataSource("comp/env/test");
return dataSource;
}
在 glassfish 中有一个 jdbc 资源和 jndi 自定义资源
但是当我部署战争文件时,我得到了这个错误:
JNDI 位置 [comp/env/test] 上可用的 [class java.util.Properties] 类型的对象不可分配给 [javax.sql.DataSource]。
解决方案
JNDI 自定义资源是java.util.properties JDBC 资源与 JDBC 连接池相关(可以是javax.sql.datasource)
只需删除 JNDI 自定义资源,并改用 JDBC 资源
推荐阅读
- image - 在 Xamarin Forms 中加载图像时的回调
- python - Python - 如何获取有关 SyntaxError 的更多信息?
- pandas - 我得到 ValueError:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。使用熊猫
- php - 尝试使用 PHP 连接到 MySQL 时出错
- gatsby - 如何从 Image URl Gatsby 中删除哈希
- java - 有没有办法使用二进制搜索来获得特定的结果
- search - 在 LinkedIn 中搜索特定部分的信息
- d3.js - d3-graphviz 放大并渲染/聚焦 1 个节点,它是后代,隐藏其他节点
- google-cloud-storage - 谷歌云存储 java 客户端为 getContent 设置超时
- java - 找不到提供程序 (ClassNotFoundException) maven 项目