JBoss 7 üzerinde çalışan bir web projesinden SQL Server'e bağlanmak için aşağıdakileri yapmak gerekmektedir :
SQL Server Sürücüsün Module Olarak Eklenmesi
SQL Server sürücüsü (örneğin sqljdbc4.jar) aşağıdaki klasöre eklenmelidir :
[jbosspath]\modules\com\microsoft\sqlserver\jdbc\main
Aynı klasöre module.xml adında aşağıdaki içeriğe sahip bir XML dosyası eklenmelidir :
<module xmlns="urn:jboss:module:1.0" name="com.microsoft.sqlserver.jdbc">
<resources>
<resource-root path="sqljdbc4.jar">
</resource-root></resources>
<dependencies>
<module name="javax.api"></module>
<module name="javax.transaction.api"></module>
<module name="javax.servlet.api" optional="true"></module>
</dependencies>
</module>
SQL Server Driver'ının Konfügürasyona Eklenmesi
SQL Server sürücü konfigurasyon dosyasına eklenmelidir. standalone için konfigurasyon dosyasının path'i :
jboss path\standalone\configuration\standalone.xml
şeklindedir. Bu XML dosyadaki drivers elementinin içinde aşağıdaki gibi driver tanımı eklenir :
<driver name="sqlserver" module="com.microsoft.sqlserver.jdbc">
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
module="com.microsoft.sqlserver.jdbc" içinde geçen com.microsoft.sqlserver.jdbc ismi , module.xml içinde geçen isimle aynısıdır
Veritabanı İçin DataSource Tanımı Eklenmesi
Veritabanına bağlanmak için veritabanı için bir DataSource yaratabilirsiniz. Bunun için DataSource tanımı standalone.xml içindeki datasources elementi içinde eklenmelidir.
<datasource jndi-name="java:jboss/datasources/testdb" pool-name="testdb" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:sqlserver://ip:port;databaseName=testdb
</connection-url>
<driver>
sqlserver
</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>10</max-pool-size>
</pool>
<security>
<user-name>root</user-name>
<password>XXX</password>
</security>
</datasource>
Yukarıda testdb, ip , port , şifre bölümlerine uygun değerleri girmeniz gerekir
Yukarıdaki tanımlamalar yapıldıktan sonra aşağıdaki gibi bağlantı yapabilirsiniz :
String dataSourceJndiName="java:jboss/datasources/testdb";
Context initialContext=new InitialContext();
DataSource dataSource=(DataSource)initialContext.lookup(dataSourceJndiName);
Connection connection = dataSource.getConnection();
// Connection alindi
H2 hafızada çalışan ve uygulama içine gömülebilen bir ilişkili veritabanıdır. Kurulum için platform bağımsız ZIP dosyası indirilir ve bir dizine açılır. Açtıktan sonra bin içindeki h2w.bat dosyasını tıklayarak çalıştıralım. http://10.26.12.162:8082/login.jsp adresi otomatik olarak açılacaktır.
Bağlan (Connect) dediğinizde arayüz açılacaktır. SA kullanıcısnın varsayılan olarak şifresi yoktur. Local'de test etmek için kullanılabilir.
Aşağıdaki gibi bir uygulama yapıp çalıştıralım:
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Connection conn=null;
try {
conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
System.out.println("connected");
} catch (Exception e) {
e.printStackTrace();
}finally {
if(conn!=null) {
conn.close();
}
}
}
}
Bu uygulama çalıştırıldığında aşağıdaki gibi hata gözükecektir:
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:h2:~/test
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.test.h2.Test.main(Test.java:7)
Görüldüğü gibi sürücü (driver) beklenmektedir.
Kurulum dizininde bin içindeki h2-1.4.199.jar dosyasını sürücü olarak projeye vermeniz gerekir. Sürücüyü verdikten sonra çalıştırırsanız ekranda connected yazması gerekir.
Eğer Caused by: java.lang.IllegalStateException: The file is locked: nio:C:/Users/../test.mv.db [1.4.199/7] gibi bir hata alırsanız bu dosyayı silip tekrar çalıştırın.
Veritabanı console üzerinden yaratılmamaktadır. Aşağıdaki gibi komut satırından yaratılabilirsiniz:
java -cp h2-1.4.199.jar org.h2.tools.Shell
Aşağıdaki gibi enter'layarak devam edildiğinde sql shell ekranı açılır.
test2 adında bir veritabanı yaratalım:
[Enter] jdbc:h2:~/test
URL jdbc:h2:~/test2
[Enter] org.h2.Driver
Driver
[Enter] sa
User test2
Password
Type the same password again to confirm database creation.
Password
Connected
Commands are caaûse insensitive; SQL statements end with ';'
help or ? Display this help
list Toggle result list / stack trace mode
maxwidth Set maximum column width (default is 100)
autocommit Enable or disable autocommit
history Show the last 20 statements
quit or exit Close the connection and exit
Artık konsolda test2 kullanıcısı ve verdiğimiz şifre ile girersek veritabanını görebiliriz.
C:\Users\
içinde test2.mv.db gibi ikinci bir DB dosyasını görebilirsiniz.
konsol ekranında da görüldüğü gibi aşağıdaki gibi işlemler yapılabilir:
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(ID INT PRIMARY KEY,
NAME VARCHAR(255));
INSERT INTO TEST VALUES(1, 'Hello');
INSERT INTO TEST VALUES(2, 'World');
SELECT * FROM TEST ORDER BY ID;
UPDATE TEST SET NAME='Hi' WHERE ID=1;
DELETE FROM TEST WHERE ID=2;