J2EE и внешние обработчики URL, сомневающиеся в дизайне - PullRequest
1 голос
/ 14 июня 2011

Я разрабатываю приложение J2EE для Glassfish 3.1, которое будет использовать одну внешнюю библиотеку, которая в значительной степени зависит от URL-адресов.URL будут использовать пользовательский протокол (например, db:123, где 123 - это идентификатор записи в базе данных).У меня есть сомнения относительно того, как реализовать обработчик протокола URL (и его реализацию URLConnection), потому что этот обработчик протокола будет использовать EJB для извлечения данных из базы данных.

Необходимо обработчик протокола dbзарегистрировано глобально в момент запуска JVM через флаг -Djava.protocol.handler.pkgs.(Я не смог найти лучшего способа сделать это в Glassfish.) В любом случае, поскольку он зарегистрирован при запуске JVM, он не знает ни о каких EJB-компонентах, которые он может вызвать в момент открытия потоков URL.Поэтому я создал класс синглтоновых реестров, в который можно зарегистрировать обработчики базы данных.Этот реестр используется URLConnection всякий раз, когда запрашивается поток (он будет искать в реестре обработчик базы данных и использовать его для извлечения данных).

Затем EJB зарегистрирует себя в качестве обработчика базы данных в @PostConstruct метод.Таким образом, каждый раз, когда используется URL db:XXX, EJB-компоненты будут вызываться косвенно для извлечения данных.

Почему-то я чувствую, что этот дизайн немного грязный, но я очень ограничен из-за пользовательских URLобработчики.Если у вас есть какие-либо предложения или советы, которые вы можете дать мне, это было бы здорово.

...