eclipse快捷键:
1、alt+shift+r 可以查找在同一个类中相同的变量
2、ctrl+shift+r可以搜索类名称
一、关于eclipse创建web项目servlet不能初始化的问题
同事用tomcat来管理自己写的一些应用程序,然后通过sevlet来初始化。由于对web开发好几个没写了,当初也没学好,所以当时我看到如下配置,只申明servlet,没有mapping,所以抱着怀疑的态度自己也试试。自己建了一个web工程,当时选Dynamic web module version的时候是3.0,写好servlet然后在web.xml里配置了如下信息,接着启动tomcat,可是并没有发现执行初始化我的servlet的init方法,在这里折腾了半天。后面才发现Dynamic web module version =3.0在启动tomcat时不初始化web.xml。
<servlet>
<servlet-name>initService</servlet-name>
<servlet-class>com.test.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
解决办法:
Dynamic web module version =3.0在web.xml里配置 <load-on-startup>1</load-on-startup>不启作用,只能在servlet的Java代码里设置相关的参数。
1、创建web工程时选Dynamic web module version =2.5
2、工程的classpath要指对目录
3、对当前工程右键-->properties-->project Facets看到如下信息
二、关于servlet中的init方法中调用死循环的问题
我的项目中有一个接口是给外部调用的,该接口是一个servlet类,其配置与普通的servlet配置是一样的,这就没什么说的了,另一个接口是通过httpclient的方式定时的调外部接口,我当时是这样配置的:
1.在webl.xml里配置servlet,启动优先级为1,覆写了servlet的init方法,在init方法中调用service的死循环方法,当web容器启动时初始化该servlet的init方法。
2.该servlet调用一个service中的一个方法,该方法是一个死循环,在死循环里调用一个sleep()方法来实现定时调用外部接口,可是由于servlet调用的service的方法是个死循环,所以所以导致servlet的init方法一直不能结束,导致web容器也不能正常启动完成。此时在外部访问另一个servlet服务,一直访问不到。
3.解决办法:在需要调度的servlet中使用线程池,通过线程池配置定时执行,问题可以得到解决。