【发布时间】:2017-01-16 20:48:15
【问题描述】:
我在 java 中构建了一个模块化项目,有 5 层。
第一层 - Bean(类)
第二层 - DaoDB(类)
第 3 层 - Dao(接口)- 很亮(从外观到 DaoDB)
第 4 层 - 外观(类) - 业务逻辑
和
第 5 层 - 使用 JAX-RS 和 JSON 的动态 Web 项目
我的第 5 层登录方法有问题。
@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");。
感谢您的帮助。
【问题讨论】:
标签: java json jdbc jax-rs restful-authentication