Хорошо. Я пытаюсь настроить пул соединений в веб-приложении Vaadin, и я слышал, что лучше сделать Tomcat для объединения пулов. Итак, у меня есть , которые просматривают некоторые видеоролики Youtube и много учебников, и я слишком плохо отношусь к этому, чтобы заставить его работать. Мне действительно нужно, чтобы кто-то помог.Пул соединений для Tomcat в Eclipse для сервера MS Sql
Должен ли сервер SQL быть на моем компьютере? Может ли это быть на другом сервере?
Допустим, у меня есть БД:
И я хочу, чтобы получить доступ к таблице в DB2 с именем Table1. Итак, согласно this, я должен зайти в server.xml в ECLIPSE.
и добавить
<Resource name="jdbc/ServerName"
auth="Container"
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="10"
maxWait="15000"
username="username"
password="password"
url="jdbc:sqlserver://ServerName;instance=SQLEXPRESS;databaseName=DB2;"
removeAbandoned="true"
removeAbandonedTimeout="30"
logAbandoned="true" />
Но согласно this guy, Это должно быть в context.xml (Я пытался просто context.xml, я пытался просто сервер .xml и я попытался с этим кодом ресурса в обоих.) Я ДУМАЮ, что он просит META-INF> Context.xml в моем веб-приложении Vaadin, которого я не могу найти. Это единственная папка Meta-Inf, которую я имею, и когда я создаю файл context.xml здесь, она просто исчезает, когда я пытаюсь ее скомпилировать.
Во всяком случае, пытается продолжить с учебником, мне нужно добавить драйверы к моей папке Tomcat> Lib так что скачать все these drivers и добавить их.
Просто для хорошей оценки, потому что некоторые другие люди используют JDBC driver Я загружаю это и добавляю его в свой Tomcat> Lib тоже.
После these notes от парня, который получил Пулы соединений для работы в своей программе Vaadin, я добавляю это в моем Java-код:
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
BasicDataSource ds = (BasicDataSource)ctx.lookup("jdbc/ServerName");
con = ds.getConnection();
String sql = "select * from DB2.dbo.Table1 where [Field1] IS NULL";
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
//Add in all info
while (rs.next()){
beanResultsList.addBean(new Bean(
rs.getInt(1),
rs.getString(2),
rs.getString(3),
rs.getDate(4),
rs.getDate(5),
rs.getInt(6),
rs.getInt(7),
rs.getInt(8),
rs.getInt(9),
rs.getString(10),
rs.getString(11),
rs.getString(12),
rs.getString(13)
));
}
} catch (SQLException | NamingException e) {
e.printStackTrace();
}finally{
try { con.close(); } catch (SQLException e) {}
try { rs.close(); } catch (SQLException | NullPointerException e) {}
try { stmt.close(); } catch (SQLException e) {}
} // End finally (try catch)
Когда я бегу, я получаю NullPointerException на con.close() в блоке finally, потому что он не тянет за столом. Или хорошо, у меня нет связи в первую очередь.
Я честно понятия не имею, что я делаю. Я не знаю, можно ли подключиться к серверу sql, если он не отключается от моего компьютера? Каждый отдельный пример, который я вижу, использует Localhost.
Редактировать: Для справки, следующий код работает 100% ZERO PROBLEMS, но я не могу получить пул соединений выше, чтобы работать.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection("jdbc:jtds:sqlserver://ServerName;instance=SQLEXPRESS","username","password");
String sql = "select * from DB2.dbo.Table1 where [Field1] IS NULL";
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
//Add in all info
while (rs.next()){
beanResultsList.addBean(new Bean(
rs.getInt(1),
rs.getString(2),
rs.getString(3),
rs.getDate(4),
rs.getDate(5),
rs.getInt(6),
rs.getInt(7),
rs.getInt(8),
rs.getInt(9),
rs.getString(10),
rs.getString(11),
rs.getString(12),
rs.getString(13)
));
}
} catch (SQLException | NamingException e) {
e.printStackTrace();
}finally{
try { con.close(); } catch (SQLException e) {}
try { rs.close(); } catch (SQLException | NullPointerException e) {}
try { stmt.close(); } catch (SQLException e) {}
} // End finally (try catch)
* ли сервер SQL должен быть на моем компьютере? * Нет. * Может ли это быть на другом сервере? * Да. –