Servlet,写入数据

时间:2011-02-24 16:23:40

标签: c# java linux servlets file-io

我有一个servlet,它使用本地主机在我的本地Windows机器上运行。我们已经成功地抓住了我们在美国的一位同事,他们现在正在他们的Linux机器上托管它,所以我们现在可以在一个模拟的现实世界环境中测试该程序。

然而,我似乎得到一个错误,我现在无法调试写,因为我的主管已经去了一天,我没有访问权限。我们理解我会做一些调查。

就在他离开之前,我把它缩小到这些代码行

file = File.createTempFile("temp", Long.toString(System.nanoTime()));
             out.print("Managed to make temp file in trst_servlet");
             FileWriter writer = new FileWriter(file);
             ObjectOutputStream oos = xstream.createObjectOutputStream(writer, "ProcessedInformation");
         oos.writeObject(returnedSearchData);
         oos.flush();
         oos.close();

         out.print("object Persisted"); //PROGRAMME MAKES IT TO HERE
         response.setContentLength((int)(file.length()));
         FileInputStream in = new FileInputStream(file);

         OutputStream ops = response.getOutputStream();

         byte[]buf = new byte[1024];
         int count = 0;
         while((count = in.read(buf)) >= 0)
         {
             ops.write(buf, 0, count);
         }
         in.close();
         ops.close();
     }

     catch(IOException ex)
             //EXCEPTION CAUGHT HERE

我想知道,有没有人知道这是一个问题,可能是Linux盒子上的缓冲区大小,或者写大文件大小,然后尝试将其发回网络。

基本上这个基于java的servlet将xml写入我的c#程序。

由于

1 个答案:

答案 0 :(得分:0)

错误是什么?如果您在浏览器中加载URL,它是否有效?

可能出现的问题:

  1. 鉴于它之前在另一个盒子上工作,现在在新盒子上找不到该文件,因为它位于不同的相对位置。

  2. 在Windows机器上工作,但在Linux上却没有?您是否在文件的路径中使用了Windows路径分隔符? “path \ to \ file”而不是“path / to / file”?

  3. 您没有将Content-type设置为“application / xml”,并且C#客户端由于某种原因拒绝它。 (在浏览器中测试)。