WebSphere Liberty + Intellij Idea - JSP 即时重新加载

WebSphere Liberty + Intellij Idea - JSP reload on fly

有人可以回答一下,如何在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 版本

提前致谢。

在 WebSphere Liberty 中,更新应用程序中的 JSP 不会像 servlet 或 class 文件那样触发 server/application 刷新/重新加载。只有在请求特定的 JSP 文件时,才会在 JSP 引擎内部重新加载 JSP。然后,它将检查 JSP 的时间戳与先前编译的 .class 文件的时间戳,以查看它们是否不匹配并触发重新翻译和重新编译。这是 JSP 请求生命周期的一部分,因此在请求 JSP 之前,在服务器上做任何事情都是没有意义的。

感谢 Jay 为我指出正确的方向。

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

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

我的示例 Liberty 服务器路径:

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

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

 %YOUR_LIBERTY_SERVER_PATH%\workarea

找到后,删除 'jsp' 文件夹,然后享受 =) 自由回归新鲜 JSP。

如果有人知道如何配置 Liberty 始终检查相应模块中的 JSP,请告知 me/us。 谢谢。