В нашем случае мы указываем все необходимые файлы (jar и zip) в нашем файле jnlp. Мы использовали .dll, но они были упакованы с программой, которая уже была установлена в системе. Мы взаимодействовали с этой программой через нашу. Все, что нам нужно, это убедиться, что путь к .dll указан в переменной пути Windows.
Что касается упаковки, мы упаковали все наши файлы jar в файл .war, а затем поместили этот файл .war в файл .ear (не обязательно, но мы это сделали) и развернули его на нашем сервере приложений. Когда мы обновляли версии jar в нашей войне, мы также обновляли номера версий jar в нашем файле .jnlp (а также в используемом нами файле version.xml) и заново развертывали его все. Затем, когда клиент запускается, он проверяет новый файл .jnlp и скачивает нужные файлы.
Это полезно? Правильно ли я понял ваш вопрос?