Init方法在java servlet中被调用两次
我想在应用程序启动时调用init方法Init方法在java servlet中被调用两次,java,servlets,Java,Servlets,我想在应用程序启动时调用init方法 <servlet> <servlet-name>servletTest</servlet-name> <servlet-class>com.gateway.Gateway</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 实际上,您正在
<servlet>
<servlet-name>servletTest</servlet-name>
<servlet-class>com.gateway.Gateway</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
实际上,您正在创建
网关
Servlet类的两个实例(对象),一个通过web.xml
,一个通过@WebServlet
,因此init()
将被调用两次(每个实例一次)。默认情况下,servlet类应该只有一个实例(除非您希望以不同的方式运行)
因此,要解决这个问题,您有两个选择:
(1) 删除web.xml
并将loadOnStartup=1
添加到@WebServlet
中,如下所示:@WebServlet(urlPatterns=“/Gateway”,loadOnStartup=1)
(2) 在Gateway
类中删除@WebServlet(urlPatterns=“/Gateway”)
,并在web.xml
中配置servlet,如下所示:
<servlet>
<servlet-name>Gateway</servlet-name>
<servlet-class>com.gateway.Gateway</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Gateway</servlet-name>
<url-pattern>/Gateway</url-pattern>
</servlet-mapping>
网关
网关
1.
网关
/网关
您实际上正在创建网关
Servlet类的两个实例(对象),一个通过web.xml
,一个通过@WebServlet
,因此init()
被调用两次(每个实例一个)。默认情况下,servlet类应该只有一个实例(除非您希望以不同的方式运行)
因此,要解决这个问题,您有两个选择:
(1) 删除web.xml
并将loadOnStartup=1
添加到@WebServlet
中,如下所示:@WebServlet(urlPatterns=“/Gateway”,loadOnStartup=1)
(2) 在Gateway
类中删除@WebServlet(urlPatterns=“/Gateway”)
,并在web.xml
中配置servlet,如下所示:
<servlet>
<servlet-name>Gateway</servlet-name>
<servlet-class>com.gateway.Gateway</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Gateway</servlet-name>
<url-pattern>/Gateway</url-pattern>
</servlet-mapping>
网关
网关
1.
网关
/网关
提供调用客户机实现来分析问题。servlet很有可能在两个不同的上下文中初始化。检查您的程序只有一个上下文。@TechBreak browser是我的客户端提供您的调用客户端实现来分析您的问题。您的servlet很可能是在两个不同的上下文中初始化的。检查您的程序是否只有一个上下文。@TechBreak浏览器是我的客户端是的,这就是问题所在。谢谢。是的,这就是问题所在。非常感谢。