Files are locked on Windows and can't be replaced

domingo, 1 de enero de 2012

Existe un problema al estar usando el plugin de Jetty para Maven, y es que el plugin bloquea (lock) los archivos de contenido estáticos como .html, .css, .js e imágenes y los usa en memoria (algo de un conector NIO). Por tal razón, si se está ejecutando un comando como mvn jetty:run, y se intenta editar este tipo de archivos, entonces aparece este error.


image.png
Para solucionar este problema, en la página del plugin tienen documentado este problema, que sucede solo con Windows. (Files locked on Windows)
Para solucionarlo se debe hacer lo siguiente:
1. Deshabilitar el uso de archivos mapeados en memoria. Para hacer esto, se debe extraer el archivo org/mortbay/jetty/webapp/webdefault.xml localizado en el JAR de Jetty (lib/jetty.jar) y cambiar la siguiente configuración a FALSE:

<init-param>
<param-name>useFileMappedBufferparam-name>
<param-value>trueparam-value>
init-param>

2. Asegurarse que esta configuración se aplica a todas las webapps. Para hacerlo, la siguiente configuración en etc/jetty.xml debe apuntar hacia nuestro archivo:
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/>Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webappsSet>
<Set name="parentLoaderPriority">falseSet>
<Set name="extract">trueSet>
<Set name="allowDuplicates">falseSet>
<Set name="defaultsDescriptor">/jesfre/jetty/mywebdefaults.xmlSet>
New>
Arg>
Call>

Espero les sirva y puedan seguir codificando a gusto.

0 comentarios: