Метод синтаксического анализа занимает все время, потому что он ожидает ввода от другого приложения.Вам нужно разделить два, чтобы вы могли видеть, что происходит.Считайте XML из другого приложения в ByteArrayOutputStream, затем, когда это будет сделано, скопируйте выходной поток во входной поток (для этого вы можете использовать commons-io) и передайте его парсеру.Затем посмотрите, что на самом деле занимает все время.
Одна вещь, которую вы могли бы оптимизировать, - это процесс входа в систему.Вы можете использовать сервер LDAP для аутентификации, LDAP оптимизирован для чтения, и вы можете получить к нему доступ с помощью JNDI.