0

FishEye 용 My Plugin은 Active Directory에 액세스하고 FishEye에 대한 몇 가지 기능을 구현할 수 있어야합니다. 플러그인은 X 분마다 디렉토리와 동기화해야하므로 SAL 스케줄러를 기반으로합니다. com.sun.jndi.ldap.LdapCtxFactory를 사용하려고하면 REST 플러그인에서만 작동하지만 클래스 로더를 다시 정의하더라도 SAL과 함께 사용하면이 클래스가로드되지 않습니다. 어쨌든, 나는 봄 LDAP 내 기능을 다시 구현 나는 어안 내 플러그인을 배포하려고 할 때 내가 가지고 :Atlassian FishEye 플러그인 및 Spring LDAP 클래스

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] 

좋아. 내가 봤 거든 찾았 어 https://developer.atlassian.com/docs/faq/troubleshooting/dependency-issues-during-plugin-initialisation 내가 의존성의 범위를 충돌을 피하기 위해 제공 변경해야한다는 것이 작성되었습니다. Ok, 나는 그것을 만들었다. 하지만 지금은 다른 예외가 있습니다

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

나는 LIB $ fisheyeDir /에 스프링 LDAP-코어 1.3.2.RELEASE.jar을 넣어 시도하고 아무 일도 발생하지 않습니다 - 부트 로더는이 JAR을 선택하지 않습니다.

아무도이 상황에서 수행 할 수있는 것을 알고 있습니까? 다른 LDAP 프레임 워크를 사용해야합니까 아니면 이러한 LDAP 클라이언트 구현을 클래스 경로로 밀어 넣을 수 있습니까?

FishEye 버전 3.6.1 (최신), Spring Jars를 클래스 경로 버전 3.0.5.RELEASE. 내 봄 보안 ldap 의존성도 3.0.5.RELEASE입니다.

미리 감사드립니다.

답변

0

FishEye가 내부적으로 사용하는 Spring 버전 (3.6.1에서 3.0.5, 3.7.1에서 3.1.4)은 플러그인에 노출되지 않습니다.

대신 Atlassian 플러그인 시스템 (https://bitbucket.org/atlassian/atlassian-plugins)에서 스프링 런타임을 얻습니다. FishEye는 플러그인 3.0.x를 사용하므로 플러그인에서 사용할 수있는 Spring 버전은 2.5.6입니다.

FishEye, 플러그인 시스템 또는 번들로 제공되는 플러그인 중 하나도 spring-ldap을 포함하지 않으므로 종속성 범위를 설정할 수 없습니다 (라이브러리가 플러그인 항아리에 포함되지 않도록하기 때문에 OSGI 가져 오기를 통해 사용 가능).

그래서 제가 시도해야한다고 생각하는 것은 스프링 2.5.6과 호환되는 스프링 - ldap 버전을 번들로 묶는 것입니다. BeanDefinitionParsingException을 해결하려면 플러그인 시스템에서 제공하는 일부 전이 의존성을 제외해야 할 수도 있습니다 (이를 찾으려면 mvn dependency : tree를 사용하십시오).

공개 : 나는 도가니 FishEye를/당신의 답변에 대한 감사를

+0

miszobi 작업 dev에 해요! 플러그인은 이미 완료되었으며 FishEye 인스턴스에서 영구적으로 작동합니다. 언 바운드 ID SDK를 사용하고 모든 스프링 코드를 제거했으며 이제는 모두 훌륭합니다. – Maxxon