WebSphere Liberty + Intellij Idea - JSP重新加载

时间:2016-06-13 11:33:35

标签: intellij-idea websphere-liberty

有人可以回答,如何在Intellij Idea下配置WebSphere Liberty以通过Ctrl + F10重新加载JSP文件? 目前重新加载类,但JSP和资源不重新加载。 据我所知,在Tomcat下所有内容都重新加载而没有额外的配置..

现在在我的Idea Liberty服务器配置中选择以下内容:

  1. Under Deployment Tab: WAR exploaded (or EAR - no matter)
  2. Under Server Tab: On frame deactivation and Update action: Update Classes And Resources 

在server.xml中选择以下功能

<feature>webProfile-6.0</feature>
<feature>localConnector-1.0</feature>
<feature>jaxws-2.2</feature>
<feature>jaxb-2.2</feature>
<feature>jaxrs-1.1</feature>    
<feature>ejbLite-3.1</feature>
<feature>cdi-1.0</feature>
<feature>appSecurity-2.0</feature>
<feature>jsp-2.2</feature>
<feature>servlet-3.0</feature>

由于服务器使用的是WebSphere Liberty Profile 7-8.5.5.7版本

提前谢谢。

2 个答案:

答案 0 :(得分:1)

在WebSphere Liberty中,更新应用程序中的JSP不会触发服务器/应用程序刷新/重新加载,类似于servlet或类文件。只有在请求该特定JSP文件时,JSP内部才会重新加载JSP。然后,它将根据先前编译的.class文件检查JSP的时间戳,以查看它们是否不匹配并触发重新翻译和重新编译。这是JSP请求生命周期的一部分,因此在请求JSP之前,在服务器上执行任何操作都没有任何意义。

答案 1 :(得分:0)

感谢杰伊指出我正确的方向。

事实证明,IntelliJ Idea通过Ctrl + F10正确地使用相应模块中的JSP更新资源。 Liberty Server实际上将JSP缓存在自己的文件夹中,甚至不会再回过头来检查JSP是否已更改。在我的Windows机器上,此文件夹位于以下路径:

 %YOUR_LIBERTY_SERVER_PATH%\workarea\org.eclipse.osgi\138\data\temp\default_node\SMF_WebContainer\%YOUR_EAR(WAR)_NAME%\jsp

我的示例Liberty Server路径:

..\IBM\wlp-javaee7-8.5.5.7\wlp\usr\servers\defaultServer

看起来路径可能不同。因此,只需在以下文件夹中查找已经访问过的JSP名称:

 %YOUR_LIBERTY_SERVER_PATH%\workarea

找到后,删除'jsp'文件夹,享受=)Liberty返回新的JSP。

如果有人知道,如何配置Liberty以便始终检查相应模块中的JSP,请让我/我们知道。 谢谢。