JBoss EAP 7์์ MS SQL Server์ฉ Non-XA Datasource๋ฅผ ์ค์ ํ ๋,
<datasource-class>ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด<connection-url>์ค์ ์ด ๋ฌด์๋์ด "Connection refused" ์๋ฌ๊ฐ ๋ฐ์ํ๋ ํ์์ ํด๊ฒฐํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์ค์ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ์ง ์ ๋ฆฌํฉ๋๋ค.
1. ๋ฌธ์ ํ์ (Issue)
MS SQL Server์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ดํฐ์์ค๋ฅผ ์ค์ ํ๊ณ ํ ์คํธ ์ฐ๊ฒฐ์ ์๋ํ์ผ๋, ์๋์ ๊ฐ์ Connection refused ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉฐ ์คํจํฉ๋๋ค.
์๋ฌ ๋ก๊ทธ
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException:
The TCP/IP connection to the host localhost, port 1433 has failed.
Error: "Connection refused. Verify the connection properties. ... Make sure that TCP connections to the port are not blocked by a firewall."
๋ฐฉํ๋ฒฝ์ด๋ DB ์๋ฒ ์ํ๋ ์ ์์ด์ง๋ง, JBoss๊ฐ localhost:1433(๊ธฐ๋ณธ๊ฐ)์ผ๋ก๋ง ์ ์์ ์๋ํ๊ฑฐ๋ URL ์ ๋ณด๋ฅผ ์ ํ ์ฝ์ง ๋ชปํ๋ ์ํฉ์
๋๋ค.
2. ์์ธ ๋ถ์ (Root Cause)
์ด ๋ฌธ์ ๋ JBoss์ ๋ฐ์ดํฐ์์ค ์ค์ ์ฐ์ ์์ ๋ฉ์ปค๋์ฆ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
- Non-XA ํ๊ฒฝ์ ํน์ฑ: JDBC 4 ํ์ค์ ๋ฐ๋ฅด๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ ๋, ์ผ๋ฐ์ ์ผ๋ก
java.sql.Driver๋ฉ์ปค๋์ฆ(URL ๋ฐฉ์)์ ์ฌ์ฉํฉ๋๋ค. - ์ถฉ๋ ๋ฐ์: ์ค์ ํ์ผ(
standalone.xml)์<datasource-class>๊ฐ ๋ช ์๋๋ฉด, JBoss๋ ์ด๋ฅผ ์ฐ์ ์ํ์ฌjavax.sql.DataSource๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํฉ๋๋ค. - ๊ฒฐ๊ณผ: ์ด ๊ณผ์ ์์
<connection-url>์์ฑ์ ๋ฌด์(Ignored)๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก JDBC URL ์ ๋ณด๊ฐ ์ ๋ฌ๋์ง ์์ ์ฐ๊ฒฐ์ ์คํจํ๊ฒ ๋ฉ๋๋ค.
3. ํด๊ฒฐ ๋ฐฉ๋ฒ (Resolution)
Non-XA ๋ฐ์ดํฐ์์ค ์ค์ ์์๋ datasource-class๋ฅผ ์ ๊ฑฐํ๊ณ , driver-class์ connection-url ์กฐํฉ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ค์ ํ์ผ ์์ (standalone.xml)
<datasource-class> ํ๊ทธ๊ฐ ์๋ ๋ผ์ธ์ ์ญ์ ํ์ญ์์ค.
<datasource jndi-name="java:/mssql" pool-name="mssqljdbc" statistics-enabled="true">
<connection-url>jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ucpost</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<driver>sqlserver</driver>
...
</datasource>
4. ์ ์ฉ ๋ฐ ๊ฒ์ฆ (Verification)
- ์ค์ ํ์ผ ์ ์ฅ ํ JBoss๋ฅผ ์ฌ๊ธฐ๋(Reload)ํฉ๋๋ค.
- ๊ด๋ฆฌ ์ฝ์ ๋๋ CLI์์ ๋ฐ์ดํฐ์์ค ์ฐ๊ฒฐ ํ ์คํธ(Test Connection)๋ฅผ ์ํํฉ๋๋ค.
- ์ ์์ ์ผ๋ก
Success๋ฉ์์ง๊ฐ ๋จ๋์ง ํ์ธํฉ๋๋ค.
xa-datasource-class ์ค์ ์ด ํ์์ ์ด๋ฉฐ URL ๋ฐฉ์์ ์ฌ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. ์ค์ ํ๋ ค๋ ํ์
(XA vs Non-XA)์ ๋ช
ํํ ๊ตฌ๋ถํด์ผ ํฉ๋๋ค.