Интеграция Java planner в spring full annotation project не работает

#java #spring-mvc #hibernate-mapping #spring-annotations #dhtmlx

#java #spring-mvc #спящий режим-отображение #spring-аннотации #dhtmlx

Вопрос:

Я работаю над проектом, в котором мне нужно добавить календарь событий. Для этого я выбрал DHTMLX javaplanner. вот что я сделал:

КЛАСС КОНФИГУРАЦИИ HIRBERNATE:

 @Configuration
@EnableTransactionManagement
@ComponentScan({ "com.XXX" })
@PropertySource(value = { "classpath:app.properties" })
public class HibernateConfig {
@Autowired
private Environment environment;

@Bean
public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(dataSource());
    sessionFactory.setPackagesToScan(new String[] { "com.XXX.domain" });
    sessionFactory.setHibernateProperties(hibernateProperties());
    return sessionFactory;
 }

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
    dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
    dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
    dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
    return dataSource;
}

private Properties hibernateProperties() {
    Properties properties = new Properties();
    properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
    properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
    properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
    return properties;        
}  

@Bean  
    //  @Autowired
        public HibernateTransactionManager transactionManager(SessionFactory s) {
           HibernateTransactionManager txManager = new HibernateTransactionManager();
           txManager.setSessionFactory(s);
           return txManager;
        }
    }
  

КОНТРОЛЛЕР СОБЫТИЙ:

 package com.XXX.controller;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;

import com.dhtmlx.planner.DHXEv;
import com.dhtmlx.planner.DHXEventsManager;
import com.dhtmlx.planner.DHXStatus;
import com.XXX.domain.Event;

public class EventController extends DHXEventsManager {

    private SessionFactory sessionFactory;
public EventController(HttpServletRequest request) {
    super(request);
}

@SuppressWarnings("unchecked")
public Iterable<DHXEv> getEvents() {
    Session session = sessionFactory.getCurrentSession();
    List<DHXEv> evs = new ArrayList<DHXEv>();
    try {
        // session = HibernateUtil.getSessionFactory().openSession();
        evs = session.createCriteria(Event.class).list();
    } catch (RuntimeException e) {
        e.printStackTrace();
    } finally {
        session.flush();
        session.close();
    }

    return evs;
}

@Override
public DHXStatus saveEvent(DHXEv event, DHXStatus status) {
    Session session = sessionFactory.getCurrentSession();
    try {
        // session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();

        if (status == DHXStatus.UPDATE)
            session.update(event);
        else if (status == DHXStatus.DELETE)
            session.delete(event);
        else if (status == DHXStatus.INSERT)
            session.save(event);

        session.getTransaction().commit();
    } catch (RuntimeException e) {
        e.printStackTrace();
    } finally {
        session.flush();
        session.close();
    }
    return status;
}

@Override
public DHXEv createEvent(String id, DHXStatus status) {
    return new Event();
}
}
  

Мой КЛАСС СОБЫТИЙ:

 import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.dhtmlx.planner.DHXEvent;


@Entity
@Table(name = "EVENTS")
public class Event extends DHXEvent{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;

    @Column(name = "event_name", nullable = false)  
    private String text;

    @NotNull
    @Column(name = "start_date", nullable = false)
    private LocalDateTime start_date;

    @NotNull
    @Column(name = "end_date", nullable = false)
    private LocalDateTime  end_date;

 ...
}
  

Когда я запускаю приложение на сервере TOMCAT в eclipse, я получил следующую ошибку:

 ct 06, 2016 4:05:32 PM org.springframework.web.context.support.AnnotationConfigWebApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXConfig': Injection of autowired dependencies failed; ... nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [com/XXX/config/HibernateConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/dhtmlx/planner/DHXEvent
Oct 06, 2016 4:05:32 PM org.springframework.web.context.ContextLoader 

initWebApplicationContext
    SEVERE: Context initialization failed
 ...
  

Я уже добавил javaplanner.jar в источниках ресурсов и в пути сборки, но он по-прежнему не работает.

Кто-нибудь может помочь с этой проблемой?

ОТРЕДАКТИРОВАНО:

Насколько я понимаю из примера, который я видел, мне нужно преобразовать это:

         <mapping class="com.dhtmlx.javaplanner" file="" jar="" package="hibernate.cfg.xml" resource="Event.hbm.xml" />
  

из hibernate.hbm.xml к чему-то еще в моем классе конфигурации гибернации. любые мысли или помощь будут более чем оценены.

Комментарии:

1. java.lang.NoClassDefFoundError: com/dhtmlx/planner/DHXEvent : Вы неправильно упаковали свои зависимости.

2. Не могли бы вы объяснить более подробно, пожалуйста?