Closed uhm0311 closed 3 weeks ago
@uhm0311
์๋์ ๊ฐ์ด wiki์ ConnectionFactory๋ฅผ ์ถฉ๋ถํ ์ค๋ช
ํ์๊ณ ,
ConnectionFactoryBuider๋ก ์ํ๋ ConnectionFactory ๋ง๋ค ์ ์์ผ๋ฏ๋ก,
DefaultArcusConnectionFactory
๋ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ผ๋ก ํ๊ฒ ์ต๋๋ค.
๐ Related Issue
โจ๏ธ What I did
ArcusConnectionFactory ํด๋์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ตฌํ์ด DefaultConnectionFactory์ ๊ฐ์ DefaultConnectionFactory๋ฅผ ์์๋ฐ๋๋ก ํ์ต๋๋ค.
static final ํ๋ ์ถ๊ฐ
๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ConnectionFactoryBuilder ํด๋์ค์ ํ๋ ๊ธฐ๋ณธ๊ฐ์ ArcusConnectionFactory ํด๋์ค ๋ด์ static final๋ก ์ ์ธํ์ต๋๋ค.
DEFAULT_FAILURE_MODE = FailureMode.Cancel
DEFAULT_IS_DAEMON = true
DEFAULT_MAX_RECONNECT_DELAY = 1
HashAlgorithm DEFAULT_HASH = HashAlgorithm.KETAMA_HASH
DEFAULT_MAX_TIMEOUTEXCEPTION_THRESHOLD = 10
DEFAULT_MAX_TIMEOUTDURATION_THRESHOLD = 1000
๊ธฐ๋ณธ๊ฐ์ ๋ฆฌํฐ๋ด์์ static final ํ๋๋ก ๋ณ๊ฒฝ
ConnectionFactoryBuilder ํด๋์ค์ ํ๋ ๊ธฐ๋ณธ๊ฐ ์ค ๋ฆฌํฐ๋ด๋ก ํ๋์ฝ๋ฉ ๋์ด ์๋ ๊ฒฝ์ฐ ๋ด๋ถ ๋์์ด ๋ฌ๋ผ์ง์ง ์๋ ์ ์์ static final ๊ฐ์ ์ฐธ์กฐํ๋๋ก ํ์ต๋๋ค. ๋ง์ฝ ํ๋์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ ๋นํ static final ํ๋๊ฐ ์๋ค๋ฉด ์๋กญ๊ฒ ์ถ๊ฐํ์ต๋๋ค. ๋จ, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ์กด๋๋ก ๋ฆฌํฐ๋ด์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๋๋ก ํ์ต๋๋ค.
private Locator locator = Locator.ARCUSCONSISTENT;
private Collection<ConnectionObserver> initialObservers = Collections.emptyList();
private AuthDescriptor authDescriptor = null;
ํ ์คํธ ์ฝ๋
ArcusConnectionFactory์ ๋ค์์ ๋ ๊ฐ์ง๋ฅผ ๋น๊ตํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
ํฅํ ๊ธฐ๋ณธ๊ฐ์ ์๋ชป ๋ณ๊ฒฝํ์ ๋ ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ์์์ฐจ๋ฆด ์ ์๋๋ก Reflection์ ์ด์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํ๋ ๋ฉ์๋๊ฐ ์๋๋ผ๋ฉด ๋์ผํ ๊ฐ์ด ๋ฐํ๋๋์ง ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ํ ์คํธ ์ฝ๋๊ฐ ์๊ฒฉํด ๋ณด์ผ ์ ์์ต๋๋ค. ๋จ, ๋ฉ์๋๊ฐ Primitive Type๋ ์๋๊ณ String ํ์ ๋ ์๋ ๊ฐ์ ๋ฐํํ๋ ๊ฒฝ์ฐ Object.eqauls() ๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์์ ๊ฐ์ฒด๋ ๊ฐ์ ๋น๊ตํ ์ ์์ด ๋ฐํ๋ ๊ฐ์ฒด์ ๊ฐ์ด ์๋ ํ์ ์ด ๋์ผํ์ง ๊ฒ์ฆํฉ๋๋ค.