HttpServlet Web服务在doGet崩溃,但在Eclipse中使用main方法

时间:2017-02-03 14:26:20

标签: java hibernate servlets

所以我在Java中使用HttpServlet编写了一个Web服务,这个Web服务必须将一个车辆列表返回到任何应用程序调用它。调用静态方法获取Vehicles列表,该方法创建Hibernate会话,从数据库中获取车辆列表,并将其返回给调用者。

如果我将它作为Servlet类中的main方法运行,它的工作效果非常好。但是,如果我在doGet()方法中添加相同的代码,则会发生异常。

以下是代码:

Servlet类(这是一个在Eclipse中运行的主要方法):

public static void main(String[]a){
        //obtain the list of vehicles from the database
        List<Vehicle> vehicles = ExecuteVehicle.getVehicleList();
        for (Vehicle vehicle:vehicles){
            System.out.println(vehicle.getVehicleId());
        }
    }

这是getVehicleList()方法:

public static List<Vehicle> getVehicleList(){

        //open a Session
        Session session = HibernateUtilities.getSessionFactory().openSession();

        //start a transaction
        session.beginTransaction();

        //SELECT STATEMENT for the entire list of Vehicles
        Query<Vehicle> query = session.getNamedQuery("SelectAllVehicles"); //query name is declared in the mapping file
        List<Vehicle> vehicles = query.list();

        //commit the changes and end the transaction
        session.getTransaction().commit();

        //close the Session
        session.close();

        //close the SessionFactory
        HibernateUtilities.getSessionFactory().close();

        return vehicles;

    }

如果你试图将它作为Web服务实际运行,这就是Servlet类中的doGet()方法崩溃了:

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //obtain the list of vehicles from the database
        List<Vehicle> vehicles = ExecuteVehicle.getVehicleList();

        //start writing a stream of data
        resp.setContentType("application/json");
        PrintWriter writer = resp.getWriter();

        for (Vehicle vehicle:vehicles){
            writer.println(vehicle.getVehicleId());
        }
        writer.flush();
        writer.close();
    }

如果我尝试将其用作Web服务,我会收到Hibernate异常:

java.lang.NoClassDefFoundError: org/hibernate/HibernateException

显然,不知何故,它无法找到我的一个课程。我想不出为什么会这样。如果使用main方法,但为什么它会使用与Web服务相同的完整代码崩溃?

0 个答案:

没有答案