Если набор реализаций интерфейса App известен заранее, то обычно применяют простое условие, типа:
public App getApp() {
if (что-то) { return new app.version1.Job(); }
else if (что-то другое) { return app.version2.Job(); }
}
Ну и дальше где-то вызываете метод getApp(). Фактически, это шаблон "фабрика объектов".
В более сложных случаях применяют что-то типа dependency injection.
Круто, но теперь вы уже баните не по количеству соединений, а по интенсивности трафика, что может быть не очень хорошо. Рекомендую, кстати, добавить к первому tcpdump опцию -p, чтобы не включать promiscuous mode и явно указать интерфейс (-i eth0 или типа того).
Звучит как что-то, связанное с транзакциями. Вы с помощью чего и как именно удаляете из "Helpdesk" и меняете/удаляете в "HelpdeskAnswers"? И приведите полное описание этих двух таблиц (за исключением не относящихся к делу колонок).
В некоторых роутерах стоит свич с поддержкой vlan, что даёт возможность получить 4 (по числу портов) раздельных интерфейса.
Попробуйте на этом роутере выполнить, например, такие команды:
cat /proc/version
ls -al / /bin /etc /dev