Мы обновляем наше приложение от JBoss 4 до JBoss 6.
Несколько частей нашего приложения доставляются клиенту необычным способом: банки просматриваются внутри нашего приложения и отправляются клиенту из сервлета, где клиент извлекает их для выполнения определенных функций поддержки.
В JBoss 4 мы рассмотрим эти банки с загрузчиком классов и найдем URL-адрес jar://, который будет использоваться для чтения флага и отправки его содержимого клиенту.
В JBoss 6, когда мы выполняем поиск, получаем URL-адрес vfs:/. Я понимаю, что это из пакета org.jboss.vfs. К сожалению, когда я вызываю openStream() на этом URL-адресе и читаю из потока, я сразу получаю EOF (read() возвращает -1).
Что дает? Почему я не могу прочитать ресурс, на который ссылается этот URL?
Я попытался получить доступ к базовым VFS-пакетам, чтобы открыть файл с помощью JBoss VFS API, но большая часть API, похоже, является частной, и я не смог найти подпрограмму для перевода из vfs:/URL к объекту VirtualFile VFS, поэтому я не мог никуда добраться.
Я могу попытаться найти файл на диске в JBoss, но этот подход кажется очень неудачным при обновлении.
Наш старый подход состоял в том, чтобы использовать Java Web Start для распространения баннеров на клиенте, а затем искать их в кэше Java Web Start для их извлечения. Но это нарушило каждое незначительное обновление Java, потому что макет кеша изменился.