2011-07-11 86 views
1

我想從Eclipse部署一個多模塊Maven項目到使用JRebel的本地Tomcat。該項目具有以下結構:從Eclipse部署Web項目使用JRebel

root [packaging: pom] 
| 
|--- domain [packaging: jar 
| 
|--- manager [packaging: jar] 
| 
|--- web [packaging: war] 

我已經在3個子模塊中的每一箇中創建了src/main/resources/rebel.xml。我可以在Eclipse中將Web項目部署到Tomcat(不使用JRebel),沒有任何問題。

不過,如果我change the deployment to use JRebel,我得到以下錯誤:

SEVERE: Exception sending context initialized event to listener instance 
of class com.web.listeners.WebAppListener 
java.lang.IllegalArgumentException: Unknown entity: com.model.Role 
.... 
.... 
Caused by: org.hibernate.MappingException: Unknown entity: com.model.Role 

Role是從域項目的持久(JPA /休眠)類,它似乎是在WebAppListener引用它,是觸發錯誤:

public class WebAppListener implements ServletContextListener, HttpSessionListener, 
     HttpSessionAttributeListener { 

    private RoleManager roleManager; 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     BeanFactory beanFactory = WebApplicationContextUtils. 
        getRequiredWebApplicationContext(sce.getServletContext()); 
     this.roleManager = beanFactory.getBean(RoleManager.class); 

     saveIfAbsent("USER", "Normal User"); 
    } 

    private void saveIfAbsent(String roleName, String roleDescription) { 

     if (roleManager.getRole(roleName) == null) { 
      Role role = new Role(); 
      role.setName(roleName); 
      role.setDescription(roleDescription); 
      roleManager.saveRole(role); 
     } 
    } 
} 

它看起來像該代碼執行時不會加載domain類,任何想法如何解決這一問題?

回答

2

你的反叛文件的內容是什麼?他們應該像

<classpath> 
    <dir name="/absolute/path/to/projectname/target/classes"></dir> 
</classpath> 

如果你正在使用maven,你也可以看看相關主題:Getting JRebel to work with 'mvn tomcat:run'

注:如果rebel.xml還包含爲src /主/資源參考,有時候 會混淆一些框架,如果發生錯誤,您應該嘗試從所有rebel.xml文件中刪除它。例如,下面的conf是相當普遍的,但可能並不總是工作:

<classpath> 
    <dir name="/absolute/path/to/projectname/target/classes"></dir> 
    <dir name="/absolute/path/to/projectname/src/main/resources"></dir> 
</classpath> 
+0

是的,這就是他們的樣子。另一個主題是不相關的,因爲我想從IDE內部運行JRebel –

0

我解決了這一問題從域中項目rebel.xml文件中刪除

<dir name="/absolute/path/to/projectname/src/main/resources"></dir> 

描述here