Новый URLStreamHandlers в стеклянной рыбе - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть устаревшее приложение, которое я пытаюсь перенести на Java EE. В настоящее время это приложение вызывает URL.setURLStreamHandlerFactory () для регистрации некоторых пользовательских обработчиков протокола URL. Этот вызов не выполняется в Glassfish v 2.1 и 3, потому что glassfish уже зарегистрировал фабрику.

Я пытался использовать системное свойство java.protocol.handler.pkgs, но у меня это не работает из-за проблем с загрузчиком классов. Все классы-обработчики являются частью приложения, и я не заинтересован в том, чтобы пытаться извлечь их и поместить jar в путь к классу контейнера.

У меня есть запах Osgi связок - очевидно, я мог бы написать комплект, который будет иметь дело с новыми протоколами. Я не заинтересован в том, чтобы превратить это веб-приложение в пакет osgi (по одному шагу! Сначала EE, а затем osgi, если возникнет такая необходимость).

Можно ли вставить jar-пакет в мой каталог WEB-INF / lib и заставить Glassfish загрузить его в виде пакета? Пакет должен будет импортировать пакеты из веб-приложений (еще один jar в WEB-INF / lib или в WEB-INF / classes). Я готов упаковать это приложение в EAR, если это сработает, я просто не могу оправдать распространение всего приложения, не зная больше.

1 Ответ

1 голос
/ 12 ноября 2009

Я решил свою проблему. Судя по всему, некоторые провода были пересечены, так как системное свойство java.protocol.handler.pkgs работает нормально.

Для любого другого срабатывания я помещаю банку с моими обработчиками в каталог $ DOMAINDIR / lib / ext /, а также в каталог WEB-INF / lib моей WAR. В конфигурации моего приложения я также добавил параметр jvm -Djava.protocol.handler.pkgs = my.handlers.pkg.prefix

Я заметил, что в glassfish 2.1 он работает без опции jvm, если я добавляю префикс к какому-либо коду запуска, но в glassfish 3 опция jvm необходима, потому что felix (использующий Glassfish реализации osgi) обращается только к свойству при запуске сервера, а не для каждого запроса.

...