我想在tomcat启动时加载一个类,它实际上会初始化其他类中的变量。
我编辑了appName / WEB-INF / web.xml,如下所示
<servlet>
<servlet-name>LoadConfigurations</servlet-name>
<servlet-class>Loader.LoadConfigurations</servlet-class>
<init-param>
<param-name>env</param-name>
<param-value>dev</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
我将servlet LoadConfiguration放在/ appName / WEB-INF / classes
中我如何检查servlet是否被调用?因为当我尝试显示初始化类的值时,它返回null
答案 0 :(得分:1)
有两个问题:
编译后的类需要根据包名进入文件夹结构。在您的情况下,名为Loader
要调用servlet,您需要在<ServletMapping>
文件中添加web.xml
答案 1 :(得分:1)
初始化servlet时,容器应调用servlet的init()方法。实现/覆盖该方法,并尝试从那里写入日志。
答案 2 :(得分:0)
这是Tomcat 7.0的解决方案
第1步: 为您的webapp / servlets创建war文件。 如果您使用的是Eclipse,File-&gt; Export-&gt; Web-&gt; WAR文件,请将其保存到已知位置。
第2步: 找出tomcat的主文件夹。 为此,请转到tomcat / apache-tomcat-7.0.41 / bin并执行./startup.sh 这将打印出几个全局变量名称。 记下CATALINA_HOME的那个。
第3步: 从CATALINA_HOME / webapps
中的步骤1复制war文件第4步: 接下来,在CATALINA_HOME / conf / {Engine} /localhost/MyServlets.xml中创建一个xml文件:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Context deployOnStartup="true" docBase="/home/ubuntu/Downloads/apache-tomcat-7.0.42/webapps/" reloadable="true">
<Manager pathname=""/>
</Context>
将docBase更改为指向您在步骤3中复制war文件的位置。
现在,您可以转到tomcat / apache-tomcat-7.0.41 / bin并执行./startup.sh。 您的servlet将自动启动。 希望这会有所帮助。
答案 3 :(得分:0)
这是我在tomcat 9上修复它的方法:
编辑conf/context.xml
文件,并将reloadable="false"
添加到<Context>
标签。
<Context reloadable="false">
编辑conf/server.xml
文件,并将deployOnStartup="false"
添加到<Host>
标签。
<Host appBase="webapps" deployOnStartup="false" …>