OSGi Equinox: как добавить обработчик протокола для LDAP? - PullRequest
2 голосов
/ 28 марта 2012

У меня проблемы с добавлением обработчика протокола для LDAP в среде OSGi.Я пытался:

  • System.setProperty("java.protocol.handler.pkgs", "iaik.x509.net");
  • -Djava.protocol.handler.pkgs=iaik.x509.net в настройках запуска

, но все равно получаю java.net.MalformedURLException: unknown protocol: ldap

Обработчик протокола для LDAP находится в iaik.x509.net и экспортируется его комплектом.Я импортирую этот пакет (который имеет iaik.x509.net) тоже.Мне кажется, что Система не может найти пакет, хотя.Как правильно «зарегистрировать» этот обработчик протокола?Я использую равноденствие 3.6.0 с использованием Java 1.6.

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Не должно ли свойство быть: -Djava.protocol.handler.pkgs=iaik.x509.net.ldap (это должен быть пакет класса, расширяющего URLConnection, если смотреть на this ). Чтобы использовать его таким образом, вам нужно будет добавить его в Jar для загрузки classpath и экспортировать этот пакет как часть системного пакета с org.osgi.framework.system.packages.extra=iaik.x509.net.ldap

Либо превратите его в первоклассный компонент OSGi. Создайте пакет, который предоставляет оболочку для обработчика с реализацией org.osgi.service.url.URLStreamHandlerService, которая экспортирует свойство службы url.handler.protocol=ldap

Не так много работы, чтобы добавить небольшой пакет, экспортирующий URLStreamHandlerService, я определенно так и поступлю.

1 голос
/ 28 марта 2012

Попробуйте установить iaik.x509.net bundle в качестве пакета расширения Framework.Он должен содержать заголовок MANIFEST:

Fragment-Host: system.bundle;extension: = bootclasspath

В этом случае обработчик протокола LDAP будет доступен для всех пакетов как часть bootclasspath.Не забудьте установить системное свойство.

Дополнительные сведения о комплектах расширений: OSGi Core Spec 4.2 - Глава 3.14

...