当前位置: 首页 > 面试题库 >

对Windows上的锁定文件进行故障排除

李凯定
2023-03-14
问题内容

对Windows上的锁定文件进行故障排除


问题答案:

Jetty会为Web应用程序缓冲静态内容,例如HTML文件,CSS文件,图像等。如果你使用的是NIO连接器,Jetty将使用内存映射文件来执行此操作。问题是在Windows上,内存映射文件会导致文件锁定,因此你无法更新或替换文件。实际上,这意味着你必须停止Jetty才能更新文件。

Remedy

Jetty提供了一个配置开关,用于DefaultServlet启用或禁用对内存映射文件的使用。如果你在Windows上运行并且遇到文件锁定问题,则应将此开关设置为禁用内存映射文件缓冲区。使用以下选项之一来配置交换机。

Using override-web.xml

可以将override-web.xml文件放置在你的webapp WEB-INF目录中,以更改DefaultServlet用于内存映射文件缓冲区的默认设置。创建一个override-web.xml具有适合你的Servlet规范版本的标头的文件,并将以下内容放置在 元素中: web-app>

 <servlet>
   <servlet-name>default</servlet-name>
   <init-param>
     <param-name>useFileMappedBuffer</param-name>
     <param-value>false</param-value>
   </init-param>
 </servlet>

Using a Context XML File

你可以创建或更新上下文xml文件,该文件将你的Web应用程序配置为应用设置以禁用内存映射文件缓冲区。将以下内容添加到上下文xml文件中:

  <Call name="setInitParameter">
      <Arg>org.eclipse.jetty.servlet.Default.useFileMappedBuffer</Arg>
      <Arg>false</Arg>
  </Call>

Using the Jetty Maven Plugin

如果你不想使用其他两种解决方案中的任何一种,则可以直接配置插件以禁用内存映射文件缓冲区。在 元素下的插件配置中

添加以下内容:

  <_initParams>
          <org.eclipse.jetty.servlet.Default.useFileMappedBuffer>false</org.eclipse.jetty.servlet.Default.useFileMappedBuffer>
  </_initParams>

Alternate Remedy

你可以强制WebAppContext始终在部署时复制Web应用程序目录。Web应用程序的基本目录(即存在静态内容的根目录)将被复制到temp目录。在xml文件中进行配置,如下所示:

<New id="myWebAppContext"  class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/</Set>
  <Set name="war">./webapps/fredapp</Set>
  <Set name="copyWebDir">true</Set>
  .
  .
</New>


 类似资料:
  • 问题内容: 如何检查服务器上发送的邮件有问题?我运行一个简单的测试: 测试输出哪个文本;但是,没有邮件到达。 我该如何追踪问题? 问题答案: 这是一个很长的故事。一些要点(假设mail()返回true,并且错误日志中没有错误): 发件人地址(“发件人”)是否属于您服务器上的域?如果不是,请这样做。 您的服务器是否列入黑名单(例如,在spamhaus.org上检查IP)?共享托管的可能性很小。 邮件

  • 问题内容: 我有一个名为Main.java的Java程序,它位于以下目录中: 当我尝试从“程序”目录运行Main.java时,一切正常,我使用了以下行: 但是当我尝试从主目录运行Main.java时: 我得到: 此错误的原因是什么? 问题答案: 这是由于您的类路径所致,该类路径将默认为当前目录。从中运行时,在当前目录中找到该类(因为该软件包似乎未设置,这意味着它是默认值)。因此,它在中找到类。 从

  • 问题内容: 我已经在Windows上安装了docker,并成功启动了bash shell窗口。但是,当我使用来测试安装时,会得到以下信息: 发布http://127.0.0.1:2375/v1.20/containers/create:拨打tcp 127.0.0.1:2375:ConnectEx tcp:由于目标计算机主动拒绝它,因此无法建立连接。您是否尝试连接到没有TLS的启用TLS的守护程序?

  • 问题内容: 我在Linux上使用PID 25426运行Java应用程序。运行时,我注意到: 该结果应如何解释? 我正在解决打开文件过多的问题,并试图了解此观察是否相关。 随着应用程序继续运行,条目数也有所不同(向上和向下)。 问题答案: java- 打开文件的过程。 25426- 这应该是实际的PID。如果没有,请通过发布标题让我们知道它是什么。 420 w-文件描述符编号,后跟打开方式。(读/写

  • 问题内容: 我已经按照本教程http://www.dsl.uow.edu.au/~sk33/php5java.htm进行了操作,但最后还是尝试了 我有这个例外 PHP致命错误:未捕获[o(Exception):“ java.lang.Exception:CreateInstance失败:new HelloWorld。原因:java.lang.ClassNotFoundException:在java

  • 我们有基于J2EE的web应用程序。在我们的生产环境中,我们间歇性地面临高CPU使用率(80-90%)。我们无法在QA环境中复制它。 生产环境:Windows 2012 Server(64位)、JDK 1.8(64位) 对于故障排除,我们采用了线程转储。它显示了总共215个线程。 我们如何找到哪些线程导致高CPU使用率? 2016-03-01 11:07:52全线程转储Java热点(TM)64位服