내가 JavaEE 어플 (6) 내 심 2.3 응용 프로그램을 통해 마이그레이션하기 시작하고있어, 그 부분은 특히, 보안을 위해 PicketLink 2.5.0 및 PicketBox 5.0을 사용하는 것 같은 IDM 구성 요소. JPA Identity Store를 사용하려고 노력하고 있으며 적절한 주석을 사용하여 자체 엔티티를 작성했습니다. 내가 사용자를 추가하려고 할 때, 나는 다음과 같은 예외 얻을 :PicketLink - NoClassDefFound : 조직/picketlink/IDM/설정/StoreConfiguration
java.lang.NoClassDefFoundError: org/picketlink/idm/config/StoreConfiguration
나는 JAR 파일에서 검토 한 결과를, 과연 나는이 객체를 볼 수 없습니다. PicketBox 5.0을 사용하고 있습니다. PicketLink와 PicketBox의 조합에 대해 알려진 문제입니까? 내가 뭘 잘못하고 있니? 이 객체는 다른 JAR에 있습니까? 내 사용자를 생성하는 코드는 다음과 같습니다
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.identityManager().jpaStore();
PicketBoxConfiguration config = builder.build();
DefaultPicketBoxManager picketBoxManager = new DefaultPicketBoxManager(
config);
picketBoxManager.start();
EntityManagerPropagationContext.set(this.entityManager);
IdentityManager idm = picketBoxManager.getIdentityManager();
SimpleUser user = new SimpleUser("testuser");
idm.add(user);
System.out.println("User added");
UPDATE : 내 설정에 대한 좀 더 정보 ... 내가 PicketLink의 2.5.0beta6 및 PicketBox 5.0.0을 다운로드
. 모든 관련 JAR 파일은 JBoss EAP 6.1에 배포 된 내 EAR 파일 내에서 유지 관리됩니다. 나는 보스 EAP 6.1 내에서 PicketLink 라이브러리를 업그레이드하는 방법을 설명은 JBoss 사이트에서 문서를 찾을 수 있었다
java.lang.NoClassDefFoundError: org/picketlink/idm/config/StoreConfiguration
org.picketbox.core.AbstractPicketBoxManager.doStart(AbstractPicketBoxManager.java:244)
org.picketbox.core.AbstractPicketBoxLifeCycle.start(AbstractPicketBoxLifeCycle.java:53)
net.test.services.TestEJB.doTest(TestEJB.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:58)
org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374)
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:129)
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:137)
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:58)
org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
...
JBWEB000071: root cause
java.lang.ClassNotFoundException: org.picketlink.idm.config.StoreConfiguration from [Module "deployment.TestApp-ear.ear:main" from Service Module Loader]
org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196)
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444)
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432)
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374)
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119)
org.picketbox.core.AbstractPicketBoxManager.doStart(AbstractPicketBoxManager.java:244)
org.picketbox.core.AbstractPicketBoxLifeCycle.start(AbstractPicketBoxLifeCycle.java:53)
net.test.services.TestEJB.doTest(TestEJB.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
모듈 종속성으로'org.picketlink'을 추가해 보셨나요? –
필자는 EAR에 내장 된 최신 버전 (2.5.0beta6)의 picketlink를 보유하고 있습니다. 이것이 JBoss EAP 6.1에 포함 된 것이 아니라 사용하고 싶은 것입니다. – Shadowman