我是Spring Boot的新手,我正在编写一个代码,当我通过邮递员的请求访问控制器时,它将获取我数据库的路径。但是使用我编写的代码,它使我出错。我写的代码是在Google上找到的。 我可以得到一些帮助吗? 这是我的控制器代码:
import org.apache.derby.client.am.SqlException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.sql.DataSource;
import javax.validation.Valid;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.List;
@RestController
@RequestMapping("/createBackup")
public class UserController
{
@Autowired
private ApplicationContext appContext;
@GetMapping("/getPath")
public void getPath()
{
DataSource ds = (DataSource)appContext.getBean("dataSource");
Connection conn = null;
DatabaseMetaData dmd = null;
String url = "";
try
{
conn = ds.getConnection();
dmd = conn.getMetaData();
url = url + dmd.getURL();
}
catch(SQLException sqe)
{
sqe.printStackTrace();
}
System.out.println(url);
}
}
我用邮递员打这个控制器,并获取我的数据库的路径。现在,我正在控制台上将其打印出来,但是这个错误困扰着我很多。
服务完美启动。但是,当我通过Postman的请求命中此控制器时,即是我收到此错误:
java.lang.AbstractMethodError: org.apache.derby.client.net.NetConnection.isValid(I)Z
at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:454) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:421) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:374) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:na]
...................................and on and on it goes..............................
答案 0 :(得分:1)
derby驱动程序实现与JDBC API之间存在差异。
在这里回答了类似的问题: spring 3, hibernate, dbcp and derby connection issue
如果可能,请使用最新版本的derby驱动程序,以及最新版本的Spring boot。 可以在这里找到带有Spring boot / derby的简单Rest Controller的示例: https://github.com/springframeworkguru/spring-boot-apache-derby-example/tree/master/src/main/java/guru/springframework
请注意,如果要从数据源获取信息,则注入Bean会更容易:
@Autowired
private Datasource ds;
比通过
获得DataSource ds = (DataSource)appContext.getBean("dataSource");