我正在编辑直接驻留在tomcat/webapps/myapp/WEB-INF
内的JSP文件,但要查看更改,我必须重新启动服务器。据我所知,JSP更改不需要您重新启动服务器。我发现与自动重新加载有关的唯一配置是reloadable = "true"
如果你想要Catalina,请设置为true 监视/ WEB-INF / classes /中的类 和/ WEB-INF / lib进行更改,以及 自动重新加载网络 如果检测到更改,则应用程序。
我在context.xml
中使用了此属性,但问题仍然存在。在没有重新启动的情况下,如果没有检测到JSP文件中的更改,可能是什么原因?
@Bozho:
这是web.xml
的摘录。我需要改变什么吗?
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
答案 0 :(得分:28)
In the tomcat docs,请参阅development
设置。必须将其设置为true才能重新加载jsps。
开发 - Jasper是否在开发模式中使用?如果为true,则可以通过modificationTestInterval parameter.true或false指定检查JSP以进行修改的频率,默认为true。
这是在CATALINA_HOME/conf/web.xml
此外,如果您需要在生产环境中刷新jsp而不重新启动,则可以转到CATALINA_HOME/work/Catalina/localhost/contentName/org/apache/jsp
并删除your_jsp.java
和your_jsp.class
文件。它们将在下次访问时重新创建。
编辑:提供配置后,以及关于不刷新内容的评论,我还有另一个:清除浏览器缓存,或从其他浏览器打开页面。
答案 1 :(得分:9)
更迟到的答案......
在上下文文件中将“antiResourceLocking”设置为“true”可能会阻止Tomcat(Bugzilla 37668)重新加载JSP。
这在Tomcat doc上记录在“antiResourceLocking”参数说明中
答案 2 :(得分:4)
我遇到了同样的问题并修复了问题。
确保在conf/context.xml
中没有以下配置
<Context antiJARLocking="true" antiResourceLocking="true">
如果你有那个,请删除antiJARLocking="true" antiResourceLocking="true"
,只需写
<Context>
答案 3 :(得分:3)
虽然可能很容易理解,但这里有什么&#34;将开发设置为真&#34;意思是(更多用于快速参考):
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<!-- Add the following init-param -->
<init-param>
<param-name>development</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
然后重启。
答案 4 :(得分:2)
迟到的答案,其他人可能会觉得这很有用。
检查Tomcat文件夹的权限,我已经尝试了很多其他解决方案,但它没有成功。
最后,我将“用户帐户”“完全控制”权限提供给Tomcat文件夹,每当我在JSP中进行更改时,Tomcat都会获取更改。我假设你使用的是Windows。
这背后的基本原理是:无论何时在JSP中进行更改,都必须将其编译并部署(写入)到webapps文件夹。如果该文件夹没有“写入”权限,它将无声地失败。在我的情况下发生了这种情况。因此,如果context.xml中的reloadable = true
和development = true
不起作用,请尝试此权限修复。
我在Windows 7上使用Tomcat 7.
答案 5 :(得分:1)
同步服务器&amp;客户时间
您可以检查服务器时间和客户端系统时间。对我来说,几天前改变服务器时间后正确工作了。它反映了 .jsp 文件的更改。
答案 6 :(得分:0)
您需要转到Eclipse中的服务器项目并编辑web.xml文件并将'development'设置为true。
答案 7 :(得分:0)
打开META-INF文件夹中的antiJARLocking
文件,并将 String sql = "select name, address, date from info";
List<String> binding = new ArrayList<String>();
if(dto.getName() != null){
sql += " where name=?";
binding.add(dto.getName());
}
pstmt = conn.prepareStatement(sql);
int index=1;
for(String p: binding){
log.info("\tindex="+index+", p="+p);
pstmt.setString((index++), p);
}
设置为false。
您的目录树应如下所示:
网络&gt; META-INF&gt; context.xml中
答案 8 :(得分:0)
我在Windows 7上使用TomEE 1.7.2和Eclipse。对我有用的解决方案只是在localhost-config(在我的IDE中)更改TomEE服务器的web.xml文件,以便开发init参数为true:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>development</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
答案 9 :(得分:0)
(Tomcat 7.0.62)我必须转到CATALINA_HOME / temp / xx -mysite /,在那个目录树中找到我的jsp文件并进行编辑。< / p>
xx 是一个随机(?)前缀号码,在我的情况下是11,但每个站点都有一个。
答案 10 :(得分:0)
我在myeclipse中进行jsp更改时也遇到了这个问题,那些在运行时没有反映在应用程序中。 我希望这些检查可以帮到你。
答案 11 :(得分:-2)
实际上jsp引擎检查jsp页面是否比它的servlet页面更旧,并在此基础上决定是否需要更改。