gpt4 book ai didi

javascript - Liferay 6.0.6/JBOSS - 如何在不经常重新部署的情况下在 portlet 中编辑 JavaScript?

转载 作者:行者123 更新时间:2023-11-30 18:33:23 27 4
gpt4 key购买 nike

我正在尝试修复 Liferay portlet(也恰好运行大型 Flex 应用程序)中的一个棘手的 JavaScript 问题,每次我进行更改时,我都必须返回提示并执行“ant deploy” "在 portlet 上,然后等待它部署,然后重新加载页面,然后等待 Flex 应用程序加载。每次我尝试任何微小的更改时,整个过程都需要 3-4 分钟。

是否有配置或设置可以解压缩 JavaScript 并允许我直接在服务器上编辑 JS 文件而无需每次都重新部署?我已经阅读了一些关于“开发人员模式”的内容,但它似乎没有用,而且所有 Liferay 文档似乎都是针对 Tomcat 的,而我使用的是 JBoss。

最佳答案

如果您正在部署一个 war 文件,只需将其展开(在 jboss 部署目录中),这样您就不会拥有一个名为 FlexPort.war 的压缩文件,而是拥有一个名为 < strong>FlexPort.war 它将包含原始 WAR 文件中的所有分解内容。

如果您更新 JavaScript 文件,您可能需要清除浏览器中的缓存,否则它会立即生效。如果您更新类,您可以通过触摸-ing WAR/web-inf/web.xml 文件进行快速重新部署。

============================================ ===============

不确定为什么看不到 JS 更新,但请尝试重现此序列。它有助于拥有一些浏览器工具,如 FirebugFiddler安装以便您可以看到响应 header 。

  1. 将 JS 文件直接检索到您的浏览器中。例如http://localhost:8080/js/admin/jquery-ui-1.8.12.custom.min.js
  2. 记下 Last-Modified 响应 header 。
  3. 修改JS文件并保存。 (确保文件的文件系统时间戳已更改)
  4. 再次检索 JS 文件。 Last-Modified 响应 header 应增加到与文件系统时间戳相同的时间戳值。
  5. 确保 HTTP 响应代码是 200 而不是 304(未修改)。

如果文件修改后您仍然看到相同的时间戳:

  1. 可能是浏览器缓存(见上面的304评论)
  2. 我想 Liferay 可能正在缓存所有内容,因此在您重新部署 WAR 之前,文件系统上的更改不会生效。如果是这种情况,请尝试*touch*ing myportlet.war/WEB-INF/web.xml 文件,这将导致重新部署 WAR。效率不高,但希望比重新发出 ant 命令更快。

快速谷歌显示了这个关于 Liferay Static Content Caching 的链接.看来 Liferay 确实可以在 ehcache 中缓存所有这些东西。如果您的 portlet 应用程序属于这种情况,您有 2 个选择:

  • 通过在您的 portal-ext.properties 中设置此属性来关闭缓存(当然,仅在开发中):com.liferay.portal.servlet.filters.cache .CacheFilter=false

  • 如果 Liferay 为 ehcache 注册了 JMX 接口(interface),您可以通过 JMX-Console 手术式地从缓存中删除目标项。或 twiddle .使用其中任何一种,一旦您弄清楚了确切的操作,就可以创建批处理文件以在命令行上按需执行它。

关于javascript - Liferay 6.0.6/JBOSS - 如何在不经常重新部署的情况下在 portlet 中编辑 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8972937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com