如何在没有变换器异常的情况下将servlet写入同步到公共xml文件资源

时间:2011-07-17 20:22:51

标签: java servlets

我正在尝试编写一个servlet,每次客户端请求更新时,都必须更新我的web-apps文件夹中的xml文件。但由于该文件是一个公共资源,我在mvn:jetty服务器上获得以下erron。 我得到一个Transformer异常,它基本上说找不到该文件,因为无法对打开了用户映射部分的文件执行所请求的操作。我相信这是一个确保线程安全的Windows系统消息。

javax.xml.transform.TransformerException: java.io.FileNotFoundException: C:\User
s\Anubhav\workspace2\blogping-dist (eng)\dreamapp\src\main\webapp\xyz.xml (T
he requested operation cannot be performed on a file with a user-mapped section                       
open)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutpu
tHandler(TransformerImpl.java:489)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:298)

有哪些建议可以帮助您同步访问权限?

我查了变压器对象的瓶颈......但是没有发现它。

由于

1 个答案:

答案 0 :(得分:3)

  • 确保关闭文件流(fileOutputStream.close()
  • 同步写入。使用synchronized(lockObject)lock.lock()

如果每个请求都需要写入公共文件,我会质疑应用程序的设计是否良好。这是一个潜在的瓶颈,你应该尽量避免它。例如,考虑事务数据库而不是文件。