먼저 다음과 같은 설치가 되어 있습니다. 버젼은 현재 제가 사용하는 것입니다.
개발용이라 local에 모두 설치했습니다.
1. JDK 설치 (1.6.0_13)
2. Tomcat 설치 (6.0.20)
3. Eclipse 설치 (Galileo)
4. Flex 설치 (3.3)
5. BlazeDS 설치 (3.2.0.3978)
지돌스타님의 블로그에 방문해서 5번까지 설치합니다.
6. MSSQL JDBC Driver : sqljdbc (2.0.1803.100)
간단하게는 sqljdbc4.jar를 tomcat home 밑에 lib 디렉토리에 복사하면 됩니다.
다음과 같이 하면 MSSQL과 연결이 됩니다.
import java.sql.Connection;
import java.sql.*;
ArrayList<Member> al = new ArrayList<Member>();
try {
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); sqljdbc4부터는 안써도 된다네요.
String connectionUrl = "jdbc:sqlserver://192.168.0.10:1433;" +
"databaseName=ABCD;user=username;password=password;";
Connection con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * FROM tablename where lastname='" + name + "'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
al.add(new Member("abcd",30,"test1"));
al.add(new Member("efgh",31,"test2"));
al.add(new Member(rs.getString("emp"),1,rs.getString("lastname")));
}
rs.close();
stmt.close();
con.close();
return al;
하지만 Tomcat의 DB Pooling 기능을 이용하려면 JNDI를 이용해야 한다고 합니다.
import를 먼저 합니다.
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
ArrayList<Member> al = new ArrayList<Member>();
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB");
Connection con = ds.getConnection();
String SQL = "SELECT * FROM tablename where lastname='" + name + "'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
al.add(new Member("abcd",30,"test1"));
al.add(new Member("efgh",31,"test2"));
al.add(new Member(rs.getString("emp"),1,rs.getString("lastname")));
}
rs.close();
stmt.close();
con.close();
return al;
소스를 위처럼 바꾸고
Eclipse에서 Project Explorer에 보면 Servers가 있는데 여기에 context.xml과 server.xml를 수정합니다. 기존에 있는 것은 두고 ResourceLink와 Resource만 추가하면 됩니다.
[context.xml]
...
<ResourceLink name="jdbc/EmployeeDB" global="jdbc/EmployeeDB" type="javax.sql.DataSource"/>
</Context>
[server.xml]
.....
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="username"
password="password"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://192.168.0.10:1433;DatabaseName=ABCD"
maxActive="8"
maxIdle="4"/>
</GlobalNamingResources>