2

OSGi環境でLDAPのプロトコルハンドラーを追加する際に問題が発生します。私は試した:

  • 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)もインポートしています。私には、システムがパッケージを見つけることができないようです。そのプロトコルハンドラーを正しく「登録」するにはどうすればよいですか?Java1.6を使用してequinox3.6.0を実行しています。

4

2 に答える 2

2

プロパティは次のようにすべきではありません: ( this-Djava.protocol.handler.pkgs=iaik.x509.net.ldap を見て、URLConnection を拡張するクラスのパッケージである必要があります)。このように使用するには、Jar に追加してクラスパスを起動し、そのパッケージをシステム バンドルの一部としてエクスポートする必要があります。org.osgi.framework.system.packages.extra=iaik.x509.net.ldap

あるいは、それをファーストクラスの OSGi コンポーネントに変えてください。org.osgi.service.url.URLStreamHandlerServiceサービス プロパティをエクスポートするの実装を含むハンドラーのラッパーを提供するバンドルを作成します。url.handler.protocol=ldap

URLStreamHandlerService をエクスポートする小さなバンドルを追加するのは大した作業ではありません。これは間違いなく私が行く方法です。

于 2012-03-28T08:58:53.760 に答える
1

iaik.x509.netバンドルを Framework 拡張バンドルとしてインストールしてみてください。MANIFEST ヘッダーが含まれている必要があります。

フラグメント ホスト: system.bundle; 拡張子:=ブートクラスパス

この場合、LDAP プロトコル ハンドラーは、bootclasspath の一部としてすべてのバンドルで使用できます。システムプロパティを設定することを忘れないでください。

拡張バンドルの詳細: OSGi Core Spec 4.2 - Chapter 3.14

于 2012-03-28T10:26:23.900 に答える