我正在开发一个 Java 解决方案来为 HTML5 页面执行 MP4 视频交付。该解决方案检查用户是否已登录,以及是否开始向用户提供视频。
我的代码在我的带有 Eclipse Indigo 和 Tomcat 6 的笔记本电脑上正常工作,我可以毫无问题地播放视频,但是当我将它以 WAR 文件的形式传送到我的生产服务器(Tomcat 6+Debian)时,我无法播放视频我的导航器(谷歌浏览器)。如果我通过 Chrome 的开发人员模式检查标题,我会看到一切正常,我们可以在“网络选项卡”中看到它正在从服务器下载的视频,但它没有出现在窗口上。
我的servlet的代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession sesion = request.getSession();
try
{
Integer idUsuario = (Integer) sesion.getAttribute("ID_USUARIO");
Integer vID = Integer.parseInt((String) request.getParameter("vID"));
if (idUsuario != null && idUsuario > 0 && vID != null && vID > 0)
{
VideoService servVideo = new VideoService();
TipoVideo video = new TipoVideo();
video = servVideo.obtieneVideo(vID);
String ruta = "/home/video/vod/";
String[] litVideo = video.getLiteralVideo().split(":");
if (litVideo.length > 1)
{
ruta = ruta.concat(litVideo[1]);
}
else
{
ruta = ruta.concat(litVideo[0]);
}
if (ruta != null && !ruta.isEmpty() && ruta.length()>2)
{
java.io.File fichero = new java.io.File(ruta);
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(fichero);
response.setContentType("video/mp4");
response.setHeader("Content-Length", Long.toString(fichero.length()));
log("Antes: " + Long.toString(fichero.length()));
response.setContentLength(Integer.parseInt(Long.toString(fichero.length())));
log("Pasamos la petición");
ServletOutputStream op = response.getOutputStream();
int i;
while ((i=fileInputStream.read()) != -1)
{
//out.write(i);
op.write(i);
}
fileInputStream.close();
op.flush();
op.close();
return;
}
}
else
{
response.getWriter().println("ACCESO DENEGADO");
log("Acceso denegado");
}
}
catch (NumberFormatException nfex)
{
response.getWriter().println("nfex: " + nfex.getMessage());
log("nfex: " + nfex.getMessage());
}
catch (ServicioException servEx)
{
response.getWriter().println("servEx: " + servEx.getMessage());
log("servEx: " + servEx.getMessage());
}
catch (Exception ex)
{
response.getWriter().println("Excepción: " + ex.getMessage());
log("Excepción: " + ex.getMessage());
}
}
在我的生产服务器中,我有默认的 tomcat 6 配置。机器上没有安装其他应用程序或 Web 服务器。
任何人都知道这里出了什么问题或者我该如何解决?