Я использую структуру каталогов с корнем тогда по крайней мере один подкаталог. Я часто использую "дату импорта документа" в качестве каталога под корнем. Это может сделать руководящие резервные копии немного легче. Безотносительно файловой системы, которую Вы используете, Вы обязаны поразить предел количества файла (практическое если не физический предел) в конечном счете. Вы могли бы думать о поддержке нескольких корней также.
Есть клон LGPL Java Service Wrapper: http://yajsw.sourceforge.net
Кстати, IANAL, но я подозреваю, что люди JSW распространяют FUD и их программное обеспечение можно использовать для предоставления услуг коммерческим приложениям по лицензии GPL, точно так же, как можно сжать коммерческое приложение для дальнейшего распространения. Хотя я могу ошибаться в этом:)
Программа, которая должна запускаться как служба Windows, должна предоставлять определенные функции, которые диспетчер служб Windows использует для связи с этой службой.
Пока нет JVM, которая реализует эти функции напрямую ( и я ничего не знаю) вам понадобится какая-то оболочка.
Я успешно использовал srvany для Java-службы Windows (в основном она позволяет запускать любую программу в качестве службы Windows, и она отлично работает с java)
Я не пробовал (пока), но Launch4j похоже, что он может подойти ваши потребности.
еще один вариант winrun4j . лицензия является CPL затмения.
Самый простой способ, который я нашел, - это RunAsService .
Сотрудник порекомендовал инструмент под названием SC , но я не пробовал его.