Я построю некоторый проект модуляции в java с 5 слоями.
1-й слой - фасоль (классы)
2-й слой - DaoDB (классы)
3-й слой - Dao (интерфейсы) - это яркий (от фасада до DaoDB)
4-й слой - фасад (классы) - бизнес-логика и
5-й слой - Dynamic Web Project с JAX-RS и JSON
у меня есть проблема с моим методом входа в 5-м слое.JAVA EE/RESTful - JAX-RS и JSON throw SQLException для Class.forName (... ClientDriver)
@Path("/web-project")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class AdminService{
private Company companyBean;
private AdminFacade getAdminFacade(HttpServletRequest req) {
AdminFacade facade = ((AdminFacade) req.getSession().getAttribute("adminFacade"));
return facade;
}
@Path("/login")
@POST
public Message adminLogin(LogInBean lgb, @Context HttpServletRequest req) throws UserSystemException, ClassNotFoundException {
// Class.forName("org.apache.derby.jdbc.ClientDriver");
CouponClientFacade facade=CouponSystem.getInstance().login(lgb.getLogin(), lgb.getPassword(), "Admin");
HttpSession session = req.getSession(true);
session.setAttribute("adminFacade", facade);
return new Message("logged in successfully as admin");
}
.....
.....
Проблема с базой данных - ClientDriver. Я получаю SQLException, когда пытаюсь добавить новую компанию. Если я не использую с Class.forName("org.apache.derby.jdbc.ClientDriver");
и когда я пытаюсь запустить другие (CRUD) методы - например
@Path("/createnewcompany")
@POST
public Message addCompany(Company cb, @Context HttpServletRequest req) throws UserSystemException {
getAdminFacade(req).createCompany(cb);
return new Message("created a new company: " + cb.getCompName());
}
я получаю исключение, но, если я иду к фасадным слоем и попытаться запустить все CRUD метод они работают хорошо.
Почему JAX-RS не работает с драйвером клиента, написанным на первом уровне?
И JAX-RS и JSON работают нормально, когда я явно пишу по методу входа в систему только для реализации драйвера - Class.forName("org.apache.derby.jdbc.ClientDriver");
.
Спасибо за помощь.
Да, это правда, и это так. – morris
Если я удалю комментарии из // Class.forName ("org.apache.derby.jdbc.ClientDriver"); система работает хорошо. Я думаю, что хороший способ не использовать с ClientDriver в моем веб-модуле. И если я прокомментирую это, то у меня есть исключение. – morris