Java Wildfly上的EJB部署没有看到hibernate

Java Wildfly上的EJB部署没有看到hibernate,java,hibernate,ejb,wildfly,Java,Hibernate,Ejb,Wildfly,我试图在wildfly 12上部署rest服务,并且使用EJB提供的依赖注入 Class data.FlightManager is on the classpath, but was ignored because a class it references was not found: org.hibernate.HibernateException 这是FlightManagerClass,我发现SessionFactory和HibernateException都有错误: @Statel

我试图在wildfly 12上部署rest服务,并且使用EJB提供的依赖注入

Class data.FlightManager is on the classpath, but was ignored because a class it references was not found: org.hibernate.HibernateException
这是FlightManagerClass,我发现SessionFactory和HibernateException都有错误:

@Stateless
@Local(IFlightManager.class)
public class FlightManager implements IFlightManager {

    private SessionFactory factory;

    public FlightManager() {
        try {
            factory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Failed to create sessionFactory object." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public Long addFlight(Flight flight) {
        Session session = factory.openSession();
        Transaction tx = null;
        Long flightId = null;

        try {
            tx = session.beginTransaction();
            flightId = (Long) session.save(flight);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
        return flightId;
    }

    public boolean deleteFlight(Long flightId) {
        Session session = factory.openSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            Flight flight = (Flight) session.get(Flight.class, flightId);
            session.delete(flight);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
            return Boolean.FALSE;
        } finally {
            session.close();
        }

        return Boolean.TRUE;
    }

    public boolean updateFlight(Flight flight) {
        Session session = factory.openSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            session.update(flight);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
            return Boolean.FALSE;
        } finally {
            session.close();
        }

        return Boolean.TRUE;
    }

    public List<Flight> getAllFlights() {
        Session session = factory.openSession();
        Transaction tx = null;
        List<Flight> flights = new ArrayList<>();

        try {
            tx = session.beginTransaction();
            flights = (List<Flight>) session.createQuery("FROM Flights").list();
            tx.commit();

            return flights;
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }

        return flights;
    }
}
@无状态
@本地(iLightManager.class)
公共类FlightManager实现IFlightManager{
私营工厂;
公共航班经理(){
试一试{
工厂=新配置().configure().buildSessionFactory();
}捕获(可丢弃的ex){
System.err.println(“未能创建sessionFactory对象。”+ex);
抛出新异常InInitializeRerror(ex);
}
}
公共长途航班(航班){
Session Session=factory.openSession();
事务tx=null;
Long flightId=null;
试一试{
tx=session.beginTransaction();
flightId=(长)会话。保存(飞行);
tx.commit();
}捕获(休眠异常e){
如果(tx!=null)
tx.回滚();
e、 printStackTrace();
}最后{
session.close();
}
返回flightId;
}
公共航班(长航班ID){
Session Session=factory.openSession();
事务tx=null;
试一试{
tx=session.beginTransaction();
Flight Flight=(Flight)session.get(Flight.class,flightId);
删除(航班);
tx.commit();
}捕获(休眠异常e){
如果(tx!=null)
tx.回滚();
e、 printStackTrace();
返回Boolean.FALSE;
}最后{
session.close();
}
返回Boolean.TRUE;
}
公共布尔更新灯(航班){
Session Session=factory.openSession();
事务tx=null;
试一试{
tx=session.beginTransaction();
更新(航班);
tx.commit();
}捕获(休眠异常e){
如果(tx!=null)
tx.回滚();
e、 printStackTrace();
返回Boolean.FALSE;
}最后{
session.close();
}
返回Boolean.TRUE;
}
公共列表getAllFlights(){
Session Session=factory.openSession();
事务tx=null;
List flights=new ArrayList();
试一试{
tx=session.beginTransaction();
flights=(List)session.createQuery(“来自flights”).List();
tx.commit();
返程航班;
}捕获(休眠异常e){
如果(tx!=null)
tx.回滚();
e、 printStackTrace();
}最后{
session.close();
}
返程航班;
}
}
并注入以下服务中:

@Stateless
@Local(IService.class)
public class FlightService implements IService<Flight, Long> {

    private final Logger LOGGER = Logger.getLogger(this.getClass().getName());

    @EJB
    private FlightManager flightManager;

    @Override
    public Long addElement(Flight element) {
        LOGGER.info("addElement called:" + element);

        Long id = flightManager.addFlight(element);

        LOGGER.info("addElement result:" + id);
        return id;
    }

    @Override
    public boolean deleteElement(Long id) {
        LOGGER.info("deleteElement called:" + id);

        boolean result = flightManager.deleteFlight(id);

        LOGGER.info("deleteElement result:" + result);
        return result;
    }

    @Override
    public Flight updateElement(Flight element) {
        LOGGER.info("updateElement called:" + element);

        boolean result = flightManager.updateFlight(element);

        LOGGER.info("updateElement result:" + result);
        return element;
    }

    @Override
    public List<Flight> getElements() {
        LOGGER.info("getElements called");

        List<Flight> flights = flightManager.getAllFlights();

        LOGGER.info("getElements result:" + flights);
        return flights;
    }

}
@无状态
@本地(IService.class)
公共类FlightService实现IService{
私有最终记录器=Logger.getLogger(this.getClass().getName());
@EJB
私人飞行经理飞行经理;
@凌驾
公共长附加元素(飞行元素){
LOGGER.info(“称为“+元素的addElement”);
Long id=flightManager.addfligh(元素);
LOGGER.info(“添加元素结果:+id”);
返回id;
}
@凌驾
公共布尔deleteElement(长id){
info(“deletelement调用:”+id);
布尔结果=flightManager.deleteFlight(id);
LOGGER.info(“删除元素结果:+结果”);
返回结果;
}
@凌驾
公共航班更新元素(航班元素){
info(“名为:“+元素的updateElement”);
布尔结果=flightManager.updateFlight(元素);
LOGGER.info(“updateElement结果:”+结果);
返回元素;
}
@凌驾
公共列表getElements(){
info(“getElements被调用”);
List flights=flightManager.getAllFlights();
LOGGER.info(“getElements结果:+航班”);
返程航班;
}
}

您知道发生这种情况的原因吗?

很可能您缺少了db的驱动程序依赖项。作为旁注,由于您没有使用容器管理的事务,您需要使用
bean管理的事务标记您的bean
您的部署中是否包括Hibernate?我该如何做?我在gradle中有hibernate依赖项