2013-03-29 19 views
0

我一直在嘗試seam3安全Jboss7.1.3與Maven原型生成耳項目(javaee6-jboss-ear),但我無法繞過錯誤其中我的自定義類無法加載。煤層3安全不工作JBoss7自定義鑑別器類沒有找到

Caused by: java.lang.ClassNotFoundException: com.czetsuya.javaee6.security.Authenticator from [Module "deployment.javaee6-demo.ear.javaee6-demo-ejb-0.0.1-SNAPSHOT.jar:main" from Service Module Loader] 

我的項目的結構爲: myProject的 -ear -jar(其中的beans.xml和認證器被定義) -war

我的身份驗證類: 包com.czetsuya.javaee6。安全;

import javax.enterprise.inject.Model; import javax.inject.Inject;

import org.jboss.seam.security.BaseAuthenticator; import org.jboss.seam.security.Credentials; import org.picketlink.idm.impl.api.PasswordCredential; import org.picketlink.idm.impl.api.model.SimpleUser;

@Model 
public class Authenticator extends BaseAuthenticator { 
    @Inject 
    Credentials credentials; 

    public Authenticator() { } 

    @Override 
    public void authenticate() { 
     if ("demo".equals(credentials.getUsername()) 
       && credentials.getCredential() instanceof PasswordCredential 
       && "demo".equals(((PasswordCredential) credentials.getCredential()).getValue())) {  
      setStatus(AuthenticationStatus.SUCCESS); 
      setUser(new SimpleUser("demo"));  
     }  
    }  
} 

我的beans.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:s="urn:java:ee" xmlns:security="urn:java:org.jboss.seam.security" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> 

    <interceptors> 
     <class>org.jboss.seam.security.SecurityInterceptor</class> 
    </interceptors> 

    <security:IdentityImpl> 
     <s:modifies /> 
     <security:authenticatorClass>com.czetsuya.javaee6.security.Authenticator 
     </security:authenticatorClass> 
    </security:IdentityImpl> 

</beans> 

在myProject的,我已經定義縫BOM:

<dependency> 
    <groupId>org.jboss.seam</groupId> 
    <artifactId>seam-bom</artifactId> 
    <version>3.1.0.Final</version> 
    <scope>import</scope> 
    <type>pom</type> 
</dependency> 

在EJB/pom.xml中,我定義了煤層的安全性:

<dependency> 
    <groupId>org.jboss.seam.security</groupId> 
    <artifactId>seam-security</artifactId> 
    <scope>provided</scope> 
</dependency> 

範圍提供,否則我會得到編譯問題:缺少類。

奇怪的是,當我部署戰爭項目時,同樣的設置工作,任何想法?我只是把這場戰爭放在耳朵裏:-)

我也是這樣做的,只需添加Authenticator和seam-security依賴關係。我遇到錯誤的項目最大的區別是我用javaee-api替換了大多數jboss jar,因爲它是標準。我認爲JBoss是標準的:-),似乎有一些神奇的事情發生在自己的罐子裏。

*工作純JBoss的項目在這裏上傳: https://code.google.com/p/czetsuya/source/browse/#svn%2Ftrunk%2Fjboss7-seam3-security

回答

0

什麼工作對我來說是不包括在戰爭pom.xml中縫安全罐子,喜歡的東西:

<dependency> 
    <groupId>com.czetsuya</groupId> 
    <artifactId>javaee7-ejb</artifactId> 
    <type>ejb</type> 
    <scope>provided</scope> 
    <exclusions> 
     <exclusion> 
      <artifactId>seam-security</artifactId> 
      <groupId>org.jboss.seam.security</groupId> 
     </exclusion> 
    </exclusions> 
</dependency>