Servlet中包含一些业务处理的方法,响应客户端的数据请求。比如对数据进行增删改查等等。在这里,Servlet本身不连接数据库进行操作,中间还有一个WebService,这个里面封装的是数据对象,并包含了数据的校验功能。
所以这里Servlet 的主要功能,就是将客户端的数据请求发给WebService,并将WebService返回的数据打包发给客户端。这里用到的WebService是用C#写的。所以调用的方法与以往有一些不同。里面多了一个ServiceSoap对象。这个东西我开始的时候并没有多注意,所以我每次发请求给WebService的时候都是如下面这样的调用:
后来发现,我们的WebService每过两天就会发生一次异常,通过抛出的异常信息看,大概意思是Web Service Pool size reached. 估计是连接池被用尽了。后来我和另一个同事商量,单独做一个ServiceSoap的全局变量。然后在Servlet ini()方法中将其初始化。在以后每一次向WebService请求数据的时候,都使用同一个ServiceSoap实例对象。关闭浏览器之后这个ServiceSoap对象的生命周期才能结束。这样应该对连接池的使用会节省很多。当然还只是我们的设想。需要验证我们的猜测还需要三到四天不停的测试才能知道。