ant tomcat问题

我用ANT编写的反部署远端服务器Tomcat下的工程

username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${webapp.name}"/>

ANT控制台提示成功,但是远端的Tomcat控制台报错:Exception in Thread "HouseKeeper" java.lang.NullPointerException
搜索的时候,有提示说是数据库连接池问题导致,但是也没说明白怎么处理.
请问各位大虾,这是怎么回事哦,该怎么处理?
[b]问题补充:[/b]
小弟刚来这个论坛,怎么对回答进行操作啊,先这样弄:
关于一楼大虾的方法:在Servlet的destroy()方法;
显示的关闭连接池;
ProxoolFacade.shutdown();----我在一个英文解释上也看到过,
我就是不太明白,比如我现在的项目:数据库连接池是用spring管理的:

所以不太明白具体该怎么该?一楼大虾能不能具体点啊..
[b]问题补充:[/b]
晕死 ,对问题的引用在哪哦,难道只有" 采纳为答案"才能回答啊?现在只有10积分了..
但是不知道具体怎么弄ProxoolFacade.shutdown(); 放在Servlet的destroy()里 ?我不太明白:我怎么知道哪个SERVELT在我用ANT的undeploy反部署的时候,最后调用?
[b]问题补充:[/b]
lewhwa大虾说的方法,我新来这个公司的项目是:strtus+spring+hibernate弄的.能不能具体讲解哈啊...谢谢了
[b]问题补充:[/b]
感谢:bohemia
这个问题解决了,感叹自己基础不牢!小弟刚来论坛,积分不多..所以多问个问题,就是我现在服务器的情况是:有个项目在运行,自己要写个ANT让本地代码打好包,然后部署到服务器,然后启动新应用.
所以小弟思路:是打好包后,用undeploy原应用(才出现刚的问题),然后再deploy,这样实现.自己写了个小的项目测试成功,但是用公司的项目的时候,走到刚刚undeploy时候出现问题,还好刚刚解决了.现在ant控制台提示Application already exists at path /*** ,这个时候tomcat下的应用还在,但是**.war不在了.....小弟不明白为什么自己写的小项目能成功,公司的项目就不能成功....
[b]问题补充:[/b]
bohemia大虾:
我的情况是先undeploy的啊,自己写了个小项目成功,但是用公司的项目的时候,undeploy后出现的情况是/项目名**.war不再了,但是/项目名**还在.所以把本地打好包的项目名**.war 用deploy方法传上去部署,就出现错误..我就不知道为什么/项目名**还在...?而自己写的小项目测试就能删除掉...这点比较迷茫.望大虾指导哈
[b]问题补充:[/b]
还是不行啊..而且怪的是/项目名**里就web-inf下的lib包里有两个*.jar其它的都删除了..真是郁闷...
[b]问题补充:[/b]
哈哈都解决了,第2个问题是因为在windows下undeploy时有时候不能删除jar文件 解决方法是:http://www.iteye.com/wiki/topic/311733 哈哈大家一起提高!感谢各位大虾

1.添加一个Servlet如

package test;
public class LoadServlet extends HttpServlet {
public void init() throws ServletException {
}

public void destroy() {
    //此处添加处理
    ProxoolFacade.shutdown(); 
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws
    ServletException, IOException {
    doGet(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
    ServletException, IOException {

}

}

2.配置WEB.xml
添加

loadServlet
test.LoadServlet
1

这样就可以了.

在Servlet的destroy()方法;
显示的关闭连接池;
ProxoolFacade.shutdown();

[quote]ANT控制台提示成功,但是远端的Tomcat控制台报错:Exception in Thread "HouseKeeper" java.lang.NullPointerException
搜索的时候,有提示说是数据库连接池问题导致,但是也没说明白怎么处理[/quote]
你说的网上,是不是
[quote]This is because Proxool is not being shutdown properly. If the JVM stops then Proxool recognises that and shuts down gracefully, but if you redeploy Proxool into some environments (for example, a servlet container) then Proxool needs to be explicitly told so by calling ProxoolFacade.shutdown(). If you have a servlet container then you could put it in the servlet's destroy() method. Alternatively, use the ServletConfigurator to both configure and shutdown Proxool[/quote]
是指用了数据库连接池,需要显式关闭,如果没有关闭,导致NPE。因此,在Servlet中体面将它关闭:在Servlet的destroy方法里调用:
[code="java"]ProxoolFacade.shutdown();[/code]

加载的Servlet中,destroy()方法中;添加如下内容

ProxoolFacade.shutdown();

就可以;

API参照:
http://proxool.sourceforge.net/api-dev/org/logicalcobwebs/proxool/ProxoolFacade.html#shutdown()

在Spring关闭数据源的问题,详见:
spring的DataSource事务郁闷了我两天
http://www.blogjava.net/zgli/archive/2008/11/03/21400.html

Servlet在做Undeploy的时候,会自动销毁;
也就会调用destroy()方法了.

然后会自动关闭Proxool的连接池. 也就问题解决了.

[quote]Application already exists at path /*** [/quote]

undeploy 先;

[quote]
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${webapp.name}"/>

[/quote]

undeploy后,remove下试试看.

那我没辙了. 呵呵.

你检查下权限,是不是可写的权限.

[quote]lewhwa大虾说的方法,我新来这个公司的项目是:strtus+spring+hibernate弄的.能不能具体讲解哈啊...谢谢了[/quote]
在spring里面的Proxool 不能直接通过proxool的shutdown。要用spring的方式来回收资源。所给的连接里面有:
[url]http://www.blogjava.net/zgli/archive/2008/11/03/21400.html [/url]