我使用Jax-RS创建了一个简单的JEE rest应用程序,同时在PicketLink上搜索安全实现,看起来非常棒 . 我能够在我的本地Wildfly实例上成功部署authorization-rs-rbac示例,之后我尝试将它集成到我自己的项目中,但是我继续在部署时从WildFly获得类未找到的异常 .
我的POM.xml依赖管理是:
<dependencyManagement>
<dependencies>
<!-- JBoss distributes a complete set of Java EE 6 APIs including a Bill
of Materials (BOM). A BOM specifies the versions of a "stack" (or a collection)
of artifacts. We use this here so that we always get the correct versions
of artifacts. Here we use the jboss-javaee-6.0-with-tools stack (you can
read this as the JBoss stack of the Java EE 6 APIs, with some extras tools
for your project, such as Arquillian for testing) and the jboss-javaee-6.0-with-hibernate
stack you can read this as the JBoss stack of the Java EE 6 APIs, with extras
from the Hibernate family of projects) -->
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-tools</artifactId>
<version>${version.org.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-hibernate</artifactId>
<version>${version.org.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${version.jboss.bom.eap}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.bom.wfk</groupId>
<artifactId>jboss-javaee-6.0-with-deltaspike</artifactId>
<version>2.4.0-redhat-1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
我的依赖关系是:
<!-- Import the PicketLink API, we deploy this as library with the application,
and can compile against it -->
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-api</artifactId>
</dependency>
<!-- Import the PicketLink implementation, we deploy this as library with
the application, but can't compile against it -->
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-impl</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Deltaspike API. We use compile scope as we need compile against its
API -->
<dependency>
<groupId>org.apache.deltaspike.core</groupId>
<artifactId>deltaspike-core-api</artifactId>
<scope>compile</scope>
</dependency>
<!-- Deltaspike Impl. we use runtime scope as we need its implementation
dependencies only on runtime -->
<dependency>
<groupId>org.apache.deltaspike.core</groupId>
<artifactId>deltaspike-core-impl</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Deltaspike Security Module API. We use compile scope as we need to
compile against its API -->
<dependency>
<groupId>org.apache.deltaspike.modules</groupId>
<artifactId>deltaspike-security-module-api</artifactId>
<scope>compile</scope>
</dependency>
<!-- Deltaspike Security Impl. we use runtime scope as we need its implementation
dependencies only on runtime -->
<dependency>
<groupId>org.apache.deltaspike.modules</groupId>
<artifactId>deltaspike-security-module-impl</artifactId>
<scope>runtime</scope>
</dependency>
我还定义了一个拦截器,如上面提到的例子所示
<interceptors>
<class>org.apache.deltaspike.security.impl.extension.SecurityInterceptor</class>
</interceptors>
我从服务器获得的错误是:
17:18:22,470 ERROR [org.jboss.msc.service.fail](MSC服务主题1-10)MSC000001:无法启动服务jboss.deployment.unit . “Project.war”.POST_MODULE:org.jboss . 服务jboss.deployment.unit中的msc.service.StartException . “Project.war”.POST_MODULE:JBAS018733:无法在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start中处理部署“Project.war”的阶段POST_MODULE( deployUnitPhaseService.java:166)[wildfly-server-8.0.0.CR1.jar:8.0.0.CR1]在org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1948)[jboss-msc -1.2.0.CR1.jar:1.2.0.CR1] at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1881)[jboss-msc-1.2.0.CR1.jar:1.2 java.util.concurrent.ThreadPoolExecutor.runWorker中的.0.CR1](未知来源)[rt.jar:1.7.0_25] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[rt.jar:1.7 .0_25]在java.lang.Thread.run(未知来源)[rt.jar:1.7.0_25]引起:java.lang .RuntimeException:JBAS018757:从org.jboss.as.server.deployment.reflect的Service Module Loader获取类com.gr.project.authentication.IDMInitializer的反射信息时出错,其中包含ClassLoader ModuleClassLoader for Module“deployment.Project.war:main” .deploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:72)[wildfly-server-8.0.0.CR1.jar:8.0.0.CR1] atg.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58 )org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:107)org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:92)at org . org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159)中的jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:77)[wildfly-serv er-8.0.0.CR1.jar:8.0.0.CR1] ... 5更多引起:java.lang.NoClassDefFoundError:java.lang.Class.getDeclaredFields0上的org / picketlink / idm / model / IdentityType(本机方法) )[rt.jar:1.7.0_25] at java.lang.Class.privateGetDeclaredFields(Unknown Source)[rt.jar:1.7.0_25] at java.lang.Class.getDeclaredFields(Unknown Source)[rt.jar:1.7 . 0_25]在org.jboss.as的org.jboss.as.server.deployment.reflect.ClassReflectionIndex . (ClassReflectionIndex.java:57)[wildfly-server-8.0.0.CR1.jar:8.0.0.CR1] . server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:68)[wildfly-server-8.0.0.CR1.jar:8.0.0.CR1] ... 10更多引起:java.lang.ClassNotFoundException:org来自[Module“deployment.Project.war:main”来自服务模块加载器的.picketlink.idm.model.IdentityType,位于org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)[jboss-modules.jar:1.3 .0.Final] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.j ava:443)[jboss-modules.jar:1.3.0.Final] org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431)[jboss-modules.jar:1.3.0.Final] at org . jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373)[jboss-modules.jar:1.3.0.Final] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118)[jboss- modules.jar :1.3.0.Final] ... 15更多17:18:22,475 ERROR [org.jboss.as.controller.management-operation](DeploymentScanner-threads - 2)JBAS014613:操作(“部署”)失败 - 地址: ([(“deployment”=>“Project.war”)]) - 失败描述:{“JBAS014671:失败的服务”=> {“jboss.deployment.unit . \”Project.war \“ . POST_MODULE”=>“服务jboss.deployment.unit中的org.jboss.msc.service.StartException . \“Project.war \” . POST_MODULE:JBAS018733:无法处理部署的POST_MODULE部署\“Project.war \”引起:java.lang . RuntimeException:JBAS018757:获取类c的反射信息时出错om.gr.project.authentication.IDMInitializer with ClassLoader ModuleClassLoader for Module \“deployment.Project.war:main \”from Service Module Loader引起:java.lang.NoClassDefFoundError:org / picketlink / idm / model / IdentityType引起:来自[Module]的java.lang.ClassNotFoundException:org.picketlink.idm.model.IdentityType来自Service Module Loader的“deployment.Project.war:main \”]}} 17:18:22,511 INFO [org.jboss.as.server](DeploymentScanner-threads - 2)JBAS018559:已部署“Project.war”( runtime-name:“Project.war”)17:18:22,512 INFO [org.jboss.as.controller](DeploymentScanner-threads - 2)JBAS014774:服务状态报告JBAS014777:无法启动的服务:service jboss.deployment . 单元 . “Project.war”.POST_MODULE:服务jboss.deployment.unit中的org.jboss.msc.service.StartException . “Project.war”.POST_MODULE:JBAS018733:无法处理部署“Project.war”的阶段POST_MODULE
这似乎是一个配置问题,但我真的无法确定错误,包括PicketLink,我没有编译错误 .
过去有人遇到过这个问题吗?