да, у меня фабрика (точнее говоря пул) тоже использует ThreadLocal. но это именно фабрика. предполагается, что обращение за драйвером к ней происходит один раз (в коде инициализации очередного теста), после чего драйвер используется, и везде, где используется, он передаётся явно, а в конце возвращается в пул. никаких "промежуточных" обращений к ThreadLocal-переменным не происходит (ну или не должно происходить, по моему замыслу)