Hibernate3提醒Session is closed

Hibernate3提示Session is closed
public void save(ScClassSort instance) {
		log.debug("saving ScClassSort instance");
		
		Session session = null;
		Transaction tx = null;
		
		
		
		try {
			session = getSession();
			tx = session.beginTransaction();
			
			if (instance.getParentId()!=0)
			{
                                     //这个分支出错!
				ScClassSort parent = findById(instance.getParentId());
			
				instance.setChild(0);
				instance.setDepth(parent.getDepth()+1);
				instance.setParentDir(parent.getParentDir()+parent.getDir()+"/");
				instance.setParentPath(parent.getParentPath()+","+parent.getId());
				System.out.println(instance);
				session.save(instance);
								
				parent.setChild(parent.getChild()+1);
				System.out.println(parent);
				session.update(parent);
			}
			else
			{
                                     //这个分支不出错!
				instance.setChild(0);
				instance.setDepth(0);
				instance.setParentDir("/");
				instance.setParentPath("0");
				System.out.println(instance);
				session.save(instance);
			}
			
			tx.commit();
			log.debug("save successful");
		} catch (RuntimeException re) {
			if(tx!=null)
			{
				tx.rollback();
			}
			
			log.error("save failed", re);
			throw re;
		}
		finally
		{
			//session.close();
		}
	}

我把session.close()不注释的时候提示Session is already closed,估计是session.commit()的时候自动关闭了,但是注释了的话还是出错,
不过奇怪的是如果执行else{...}中的分支不出错!