Я настроил JNDI базы данных в файле apache tomcat 7 server.xml следующим образом:
<GlobalNamingResources>
<Resource name="jdbc/iotDB"
global="jdbc/iotDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/iot"
username="root"
password="mysqlroot"
validationQuery="select 1"
maxActive="1000"
maxIdle="20"
minIdle="5"
maxWait="10000"/>
Но когда я ищу тот же JNDI из моей java-программы следующим образом:
private static DataSource dataSource;
static{
try {
InitialContext ctx = new InitialContext();
dataSource = (DataSource) ctx.lookup("java:/comp/env/jdbc/iotDB");
} catch (NamingException e) {
// TODO: handle exception
LOGGER.error("Unable to initailize Database JNDI, details: \n", e);
}
try(Connection con = dataSource.getConnection();
String name = "test";
PreparedStatement ps = con.prepareStatement("update rooms set updatetime = current_timestamp() where name = ?");) {
ps.setString(1, name);
LOGGER.debug("statement formed as:"+ps.toString());
if (ps.executeUpdate() > 0) {
LOGGER.info("Update room status successfully for room " + name);
}
} catch (Exception e) {
LOGGER.error("Unable to update room status, details: \n{}", e);
}
}
Я всегда получаю сообщение об ошибке сбоя линии связи следующим образом:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад.Драйвер не получил никаких пакетов от сервера.)
Caused by: java.net.SocketException: Permission denied (connect failed)
Версия MYSQL - 5.5.60-MariaDB, а версия драйвера MYSQL jdbc - 5.1.18.Я могу создать соединение с простой программой Java JDBC.Столкнувшись с этой проблемой, когда я иду для доступа к базе данных с использованием JNDI.Пожалуйста, помогите.