Java Wildfly上的EJB部署没有看到hibernate
我试图在wildfly 12上部署rest服务,并且使用EJB提供的依赖注入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
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依赖项