2012-11-22 23 views
1

我在第一次使用EJB和JSF ,我不能解決此問題:EJB/JSF java.lang.ClassNotFoundException:com.ericsantanna.jobFC.dao.DAOFactoryRemote from [Module「com.sun.jsf-impl:main」from local module loader

 20:23:12,457 Grave [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-8081-2) com.ericsantanna.jobFC.dao.DAOFactoryRemote from [Module "com.sun.jsf-impl:main" from local module loader @439db2b2 (roots: C:\jboss-as-7.1.1.Final\modules)]: java.lang.ClassNotFoundException: com.ericsantanna.jobFC.dao.DAOFactoryRemote from [Module "com.sun.jsf-impl:main" from local module loader @439db2b2 (roots: C:\jboss-as-7.1.1.Final\modules)] 

我得到這個,當我做像selectOneMenu用於或命令按鈕的點擊動作。

DAOFactory.class

@Singleton 
@Remote(DAOFactoryRemote.class) 
public class DAOFactory implements DAOFactoryRemote { 

private static final long serialVersionUID = 6030538139815885895L; 

@PersistenceContext 
private EntityManager entityManager; 

@EJB 
private JobDAORemote jobDAORemote; 

/** 
* Default constructor. 
*/ 
public DAOFactory() { 
    // TODO Auto-generated constructor stub 
} 

@Override 
public JobDAORemote getJobDAO() { 
    JobDAO jobDAO = (JobDAO) jobDAORemote; 
    jobDAO.setEntityManager(entityManager); 

    return jobDAO; 
} 

JobDAO.class

@Stateless 
@Remote(JobDAORemote.class) 
public class JobDAO implements JobDAORemote { 

private static final long serialVersionUID = -5483992924812255349L; 

private EntityManager entityManager; 

/** 
* Default constructor. 
*/ 
public JobDAO() { 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void insert(Job t) { 
    entityManager.persist(t); 
} 

@Override 
public Job findById(Class<Job> classe, Long id) { 
    return entityManager.getReference(classe, id); 
} 

@Override 
public Job findByName(Class<Job> clazz, String name) { 
    return entityManager 
      .createQuery("SELECT job FROM " + clazz.getName() + " job WHERE job.nome = :nome" 
       , Job.class) 
      .setParameter("name", name) 
      .getSingleResult(); 
} 
... 

TriggerFormBean.class

@ManagedBean 
@ViewScoped 
@Stateless 
public class TriggerFormBean implements Serializable { 

private static final long serialVersionUID = -3293560384606586480L; 

@EJB 
private DAOFactoryRemote daoFactory; 

@EJB 
private TriggerManagerRemote triggerManagerRemote; 
... 

triggerForm.xhtml(具有問題的部分)

      </p:layoutUnit> 
          <p:layoutUnit id="eastConditionPanel" position="center" size="50%"> 
           <p:panel header="Conditions to Release" style="width:97%;height:97%;"> 
            <h:panelGrid columns="2" cellpadding="3"> 
             <h:outputLabel value="Condition Name:" for="conditionName" /> 
             <p:inputText id="conditionName" value="#{triggerFormBean.newCondition.name}" /> 
            </h:panelGrid> 

            <p:commandButton value="Add Condition" update="conditionsToReleaseList" id="addConditionToRelease" 
             actionListener="#{triggerFormBean.addNewCondition}" /> 

            <p:orderList 
              id="conditionsToReleaseList" 
              value="#{triggerFormBean.trigger.conditionsToRelease}" 
              var="condition" 
              controlsLocation="none" 
              itemLabel="#{condition.name}" 
              itemValue="#{condition}" 
              iconOnly="true" 
              style="width:97%;heigth:97%;"/> 
            </p:panel> 
         </p:layoutUnit> 

在TriggerFormBean.class中,如果註釋daoFactory,我們會得到與triggerManagerRemote相同的異常,並且都使用@EJB註釋。

我不明白我的DAOFactory和「模塊com.sun.jsf-IMPL:主之間的關係」 ......當我在命令按鈕單擊時

例外,它只能得到來自inputText的文本,設置爲一個Condition實例並添加到由orderList映射的ArrayList。

設置:JBoss 7.1,Primefaces 3.4

謝謝。

回答

0

其實我有同樣的麻煩。 奇怪降級到JBoss模塊解決了這個問題對我來說:

<module xmlns="urn:jboss:module:1.1" name="javax.faces.api"> 
<dependencies> 
    <module name="javax.el.api" export="true"/> 
    <module name="javax.servlet.api" export="true"/> 
    <module name="javax.servlet.jsp.api" export="true"/> 
    <module name="javax.servlet.jstl.api" export="true"/> 
    <module name="javax.validation.api" export="true"/> 
</dependencies> 

<resources> 
    <resource-root path="jboss-jsf-api_2.1_spec-2.0.1.Final.jar"/> 
    <!-- Insert resources here --> 
</resources> 

代替:

<module xmlns="urn:jboss:module:1.1" name="javax.faces.api"> 
<dependencies> 
    <module name="javax.el.api" export="true"/> 
    <module name="javax.servlet.api" export="true"/> 
    <module name="javax.servlet.jsp.api" export="true"/> 
    <module name="javax.servlet.jstl.api" export="true"/> 
    <module name="javax.validation.api" export="true"/> 
</dependencies> 

<resources> 
    <resource-root path="jboss-jsf-api_2.1_spec-2.1.21.Final.jar"/> 
    <!-- Insert resources here --> 
</resources> 

的區別在於使用的版本。 我無法解釋爲什麼。

希望這有助於

相關問題