我有几个关于 eclipse 工作空间中 .metadata\.plugins
文件夹中的 org.eclipse.wst.server.core 文件夹的问题。我知道在本地主机上运行应用程序时,这是我们必须替换前端文件的文件夹,例如 JSP
、JS
文件、CSS
文件、HTML
文件、图片
等
将有一些 tmp
文件夹,我必须将文件替换到这些文件夹中的相应位置。该文件夹将有另一个文件夹,其结构为 WAR
文件,我将从我的工作空间中获取该文件,有时会有多个 tmp
文件夹,如 tmp0
、tmp1
、tmp2
等(其中大部分都有所有必需的文件)。当有多个文件夹时,很难确定我需要将文件替换到哪个文件夹中。
然后我必须停止服务器,杀死所有在后台运行的 java
(手动)并且必须清除所有 tmp
文件夹(因为如果 java未正确终止 tmp
中的 jar
文件无法删除,说明其当前正在使用)。我猜服务器使用这些 tmp
文件夹中的一个来运行应用程序。
清除所有 tmp
文件夹后,如果我再次启动服务器,在该文件夹中创建的第一个文件 (org.eclipse.wst.server.core) 将是一个 servers.xml
,然后将创建一个 tmp0
可能是 tmp1
。整个项目发布时只有一个tmp
文件夹,如果我发布多次,将创建另一个tmp
文件夹,可能是第2次,第3次或第n次.
所以我的问题是
- org.eclipse.wst.server.core 文件夹是否有通用名称?
为什么多次发布时会创建多个
tmp
文件夹?我们可以将它限制在单个tmp
文件夹中吗?项目发布后,服务器是否有可能使用多个
tmp
文件夹来处理不同的请求。就像我使用tmp0
的第一个请求一样,当我刷新页面时它使用tmp1
文件夹?
针对第三个问题进行了编辑
我打开了上图中给出的文件夹中的所有xml
文件,在tmp-data.xml
中,我找到了这个内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<temp-directories>
<temp-directory age="0" key="GlassFish v2.1 Java EE 5 at localhost" path="tmp0"/>
</temp-directories>
其中 path
属性的值为 tmp0
。所以我猜这将是我第三个问题的答案。我猜当有多个 tmp
文件夹时会创建这个文件,因为在删除所有 tmp
文件夹和文件夹中的文件并发布工作空间后 tmp-data.xml
文件不存在。
关于 WTP 的编辑
我没有太多关于 WTP 的详细信息,但是当我在我的 eclipse 中单击 Help
并选择 About Eclipse
时,我得到了这个窗口
最佳答案
据我所知不是。它是由 WTP(Web 工具平台)使用 WST(Web 标准工具)创建的。如果你找到了,也请告诉我。
这取决于 WTP 和 WST 在发布工件之前所做的不同检查。它不会一直发生,但比预期的要多得多,因为文件锁会阻止 eclipse 发布应用程序的新副本。因此,代码必须尝试创建新的 tmp 文件夹作为解决方法。然后更新元数据 (publish.xml),一切正常,我觉得这要好得多,因为开发人员不必知道很多关于这些故障的信息。我们可以在您的 eclipse 的服务器属性中更改此设置。请注意,不同的插件有不同的方式来执行此操作,我的 STS 将默认部署路径设置为 wtpwebapps。
这必须在您的发布 xml 文件中可用。它还取决于您使用的 WTP/WST 版本。很难看出文件夹生成的位置(至少目前对我而言),但您可以查看 WTP 中的 PublishUtils.java 和 PublishDelegate.java。 Github here .
不,当然不是,在项目发布后,整个服务器都指向工件所在的位置。尽管上下文刷新可能会因线程重叠或等待时间而失败,但不可能将两个不同的实例部署到具有相同应用程序/上下文名称的同一服务器中。
关于java - 关于 Java 中 Web 应用程序的 "org.eclipse.wst.server.core"文件夹的几个一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860523/