现在我正在使用Apache做一些非常简单的文件服务。我们还有一个JBoss 4.2.3实例,可以完成我们所有的应用程序服务。我想把JBoss用于一切。在Apache中,我在httpd.conf文件中执行以下操作来执行文件服务:
Alias /reports "C:/driveReports/"
<Directory "C:/driveReports/*">
AllowOverride All
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
在JBoss中我能做些什么来完成同样的事情吗?这似乎很容易,但我找不到任何让我相信有一个解决方案不会让Apache与JBoss的Tomcat相关联的解决方案。
我知道我可以轻松地将文件从“C:/ driveReports”位置移动到JBoss web部署者位置,但我宁愿不必这样做。感谢。
答案 0 :(得分:0)
我不确定JBoss AS是否有开箱即用的功能。毕竟,这是一个应用服务器。
您可以将servlet用于此目的,类似于Jetty的默认servlet,其代码如下:
private void dispatchFileForDownload( File file, HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException {
// Check the file existence.
if( !file.exists() )
throw new IllegalStateException("File "+file.getPath()+" does not exist.");
if( !file.isFile() )
throw new IllegalStateException("File "+file.getPath()+" is not a regular file.");
// HTTP stuff.
resp.setContentLength( (int)file.length() );
if( artifactInfo.getFileName().endsWith(".jar") )
resp.setContentType("application/java-archive");
else if( artifactInfo.getFileName().endsWith(".xml") )
resp.setContentType("text/xml");
else
resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition", "attachment; filename="+file.getName());
ServletOutputStream os = resp.getOutputStream();
FileInputStream in = new FileInputStream(file);
IOUtils.copy(in, os);
in.close();
os.close();
}
答案 1 :(得分:0)
尝试从此Wiki页面获取有关static file serving的帮助。