昵称最多20个字符 2016-03-28 03:56 采纳率: 0%
浏览 1383

JDBC自定义事务处理出错

我使用InvocationHandler自定义了一个事务处理类,但是在测试时发现会报空指针异常,是什么原因?
使用的是jdk 1.8

 public class TransactionHandler implements InvocationHandler {

    private final Object target;

    public TransactionHandler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Connection conn = DbUtil.getConnection();
        try {
            conn.setAutoCommit(false);
            method.invoke(target, args);
            conn.commit();
        } catch(SQLException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
            System.out.println(e.getMessage());
            conn.rollback();
            conn.setAutoCommit(true);
        }
        return null;
    }

}

测试的代码

 public static void main(String[] args) throws SQLException {
        User user = new User();
        user.setUserName("test6");
        user.setPassword("test6");
        UserService userService = new UserServiceImpl();
        InvocationHandler transactionHandler = new TransactionHandler(userService);
        UserService userServiceProxy = (UserService) Proxy.newProxyInstance(userService.getClass().getClassLoader(), userService.getClass().getInterfaces(), transactionHandler);
        System.out.println(userServiceProxy.save(user));
    }

会在最后输出的时候报空指针异常,但是数据可以正确的插入数据库,出错也可以回滚。

  • 写回答

1条回答

  • 毕小宝 博客专家认证 2016-03-28 13:22
    关注

    排查下那个对象是空指针呢,异常信息定位是哪一行?

    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式