Почему плохо все ресурсы модуля складывать в корень?
Не дай бог, но вдруг ваш модуль будет использован вместе с ещё каким-то модулем и, не дай бог, он спроектирован также. Стандартный ClassLoader без наворотов на запрос getResource("some_resource") схватит первый попавшийся (скорее всего в порядке загрузки jar-ников) ресурс и отдаст его вам. Чем это чревато решать вам, но ведь не зря же придумали package.
nginx [engine x] - это лёгкий HTTP-сервер и почтовый прокси-сервер. Сие чудо работает на множестве серверов, в том числе на большинстве серверов Рамблера.
Примерная диаграмма работы:
HTTP Clients <--> Frontend server (nginx) <--> Backend servers (Apache, Tomcat, JBoss, etc)
Таким образом backend-сервера будут получать все запросы с единого IP-адреса, а именно с адреса proxy_ip, где установлен nginx (в случае когда backend сервер физически совпадает с frontend получим proxy_ip=127.0.0.1). В принципе это не критично, но если на конечном сервере необходимо знать адрес клиента, то придётся немного поплясать с бубном.
Решение для связки apache2 + nginx:
Задача: из Java-приложения получить доступ к локальному кешу WebStart приложений.
Зачем? постараюсь обяснить в последующих постах :)
Решение:
"Бежит дорога все вперед.
Куда она зовет?
Какой готовит поворот?
Какой узор совьет?
Сольются тысячи дорог
В один великий путь.
Начало знаю, а итог -
Узнаю как-нибудь."
I tried to develop plugin for JOSM. JOSM uses ant to build plugins, but I like maven.
Задача: получить доступ к файлу /META-INF/MANIFEST.MF внутри конкретного jar-файла.
Суть проблемы в том, что getResource("/META-INF/MANIFEST.MF") вернёт первый попавшийся файл, найденный в class path.
Решение: