Вот немного отличающееся решение для рекурсии стиля:
public static int countOccurrences(String haystack, char needle)
{
return countOccurrences(haystack, needle, 0);
}
private static int countOccurrences(String haystack, char needle, int accumulator)
{
if (haystack.length() == 0) return accumulator;
return countOccurrences(haystack.substring(1), needle, haystack.charAt(0) == needle ? accumulator + 1 : accumulator);
}
Нет. Область имени источника данных - один экземпляр Tomcat.
Если вы запускаете отдельный процесс Tomcat для каждого клиента, все, что имеет значение, - это то, как настроен источник данных, а не то, как его называет Tomcat. Пока каждый источник данных настроен на использование другой базы данных, перекрестных разговоров не будет.
Это зависит от того, как вы развертываете приложение для каждого клиента,
Если вы определяете ресурс JNDI DataSource
в контексте для развертывания приложения, я считаю, что у вас может быть даже несколько копий одного и того же приложения, работающего в тот же экземпляр Tomcat и использование того же имени JNDI для доступа к разным базам данных. Если каждый экземпляр приложения полностью запускается в другом экземпляре Tomcat, то определенно невозможно, чтобы один экземпляр ссылался на базу данных, указанную для другого экземпляра.
Нет шансов пересечь базу данных, потому что область имени источника данных - это один экземпляр Tomcat, и вы можете иметь несколько источников данных в одном экземпляре tomcat .... при условии, что данные источник другой нет шансов пересечь базу данных .....