2013-08-06 25 views
4

我开始了我的迁移煤层2.3应用的JavaEE 6,并作为该部分将使用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都保存在我的EAR文件中,该文件部署在JBoss EAP 6.1上。当我运行我的代码,我看到以下异常抛出:

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) 
+0

你有没有尝试添加'org.picketlink'作为一个模块依赖? –

+0

我有嵌入在EAR picketlink的新版本(2.5.0beta6)。这是我想使用的,而不是JBoss EAP 6.1自带的。 – Shadowman

回答

0

我能上解释了如何在JBoss EAP 6.1中升级PicketLink库JBoss的网站查找文档。这解决了一切。