0

私の FishEye 用プラグインは、Active Directory にアクセスし、FishEye 用のいくつかの機能を実装できるようにする必要があります。プラグインは X 分ごとにディレクトリとの同期を行う必要があるため、SAL スケジューラに基づいています。com.sun.jndi.ldap.LdapCtxFactory を使おうとしたところ、REST プラグインでしか動作しないことがわかりましたが、SAL で使用すると、クラスローダーを再定義してもこのクラスがロードされません。とにかく、Spring LDAP を使用して機能を再実装し、プラグインを FishEye にデプロイしようとすると、次のようになりました。

2014-12-03 23:12:03,010 ERROR [ThreadPoolAsyncTaskExecutor::Thread 9 ] org.springframework.osgi.extender.internal.activator.ContextLoaderListener DefaultOsgiBundleApplicationContextListener-onOsgiApplicationEvent - Application context refresh failed (NonValidatingOsgiBundleXmlApplicationContext(bundle=com.mycompany.fisheye.ldap-restriction-plugin, config=osgibundle:/META-INF/spring/*.xml))
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/osgi]
Offending resource: URL [bundle://84.0:0/META-INF/spring/atlassian-plugins-component-imports.xml]

Ok。私はグーグルで見つけましたhttps://developer.atlassian.com/docs/faq/troubleshooting/dependency-issues-during-plugin-initialisation競合を回避するために、依存関係の範囲を提供 に変更する必要があると書かれています。わかりました、私はそれを作りました。しかし、今は別の例外があります:

Exception in thread "PluginSchedulerTask-com.mycompany.fisheye.LdapRestrictio    nComponentImpl:job" java.lang.NoClassDefFoundError: org/springframework/ldap/core/support/LdapContextSource        

spring-ldap-core-1.3.2.RELEASE.jar を $fisheyeDir/lib に配置しようとしましたが、何も起こりません - ブートローダーはこの JAR を取得しません。

この状況で何ができるか知っている人はいますか?別の LDAP フレームワークを使用する必要がありますか? または、これらの LDAP クライアントの実装をクラスパスに押し込むことは可能ですか?

FishEye バージョン 3.6.1 (最新)、クラスパス バージョン 3.0.5.RELEASE へのスプリング jar。私の spring-security-ldap 依存関係も 3.0.5.RELEASE です。

前もって感謝します。

4

1 に答える 1

0

FishEye が内部で使用する Spring バージョン (3.6.1 では 3.0.5、3.7 では 3.1.4) は、プラグインに公開されていません。

代わりに、Atlassian プラグイン システム ( https://bitbucket.org/atlassian/atlassian-plugins ) から Spring ランタイムを取得します。FishEye はプラグイン 3.0.x を使用するため、プラグインで使用できる Spring バージョンは 2.5.6 です。

FishEye、プラグイン システム、バンドルされたプラグインのいずれにも spring-ldap が含まれていないため、依存関係のスコープを に設定することはできません (これにより、ライブラリがプラグイン jar に含まれず、代わりに OSGI 経由で利用できることが期待されます)。輸入)。

したがって、Spring 2.5.6 と互換性のあるバージョンの spring-ldap をバンドルすることをお勧めします。BeanDefinitionParsingException を解決するには、プラグイン システムによって提供されるいくつかの推移的な依存関係を除外する必要がある場合があります (それらを見つけるには mvn dependency:tree を使用します)。

開示:私はFishEye / Crucibleに取り組んでいる開発者です

于 2015-02-19T12:32:19.893 に答える