развернуть веб-проект из Eclipse с помощью JRebel

Я пытаюсь развернуть многомодульный проект Maven из Eclipse на локальный Tomcat с помощью JRebel. Проект имеет следующую структуру:

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

Я создал src/main/resources/rebel.xml в каждом из 3-х дочерних модулей. Я могу без проблем развернуть веб-проект на Tomcat (без использования JRebel) из Eclipse.

Однако если я изменю развертывание на использование 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/Hibernate) класс из доменного проекта, и похоже, что ссылка на него в 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 не загружаются при выполнении этого кода, есть идеи, как это исправить?


person Dónal    schedule 11.07.2011    source источник


Ответы (2)


Каково содержание ваших повстанческих файлов? Они должны выглядеть

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

Если вы используете maven, вы также можете ознакомиться с соответствующей темой: Получение JRebel для работы с 'mvn tomcat:run'

Примечание: если в файле relay.xml также содержится ссылка на src/main/resources, это иногда приводит к путанице в некоторых фреймворках, и в случае возникновения ошибок вам следует попробовать удалить его из всех файлов файла файла rein.xml. Например, следующий конфиг довольно распространен, но может не всегда работать:

<classpath>
    <dir name="/absolute/path/to/projectname/target/classes"></dir>
    <dir name="/absolute/path/to/projectname/src/main/resources"></dir>
</classpath>
person Arnelism    schedule 11.07.2011
comment
да, так они выглядят. Другая тема не актуальна, потому что я хочу запустить JRebel из среды IDE. - person Dónal; 11.07.2011

Я решил проблему, удалив

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

из файла rein.xml в доменном проекте, как описано здесь

person Dónal    schedule 22.07.2011