2013-08-07 62 views
1

这是非常容易使用的Glassfish:JBoss的等价文档根目录

考虑在UNIX /apps/static_content/我的绝对路径。 使用Glassfish的,我会简单地定义备用文档根为:

<property name="alternatedocroot_1" 
    value="from=/static/* dir=/apps/static_content/"/> 

当我上传我的图片和其他数据文件,我可以将它们保存到/apps/static_content目录,我的JSF页面内我可以显示我的静态内容一般为:

<p:graphicsimage value="/static/external_web_app.png"/> 

我真的需要到JBoss AS7来实现相同的功能

我怎样才能做到这一点?

+0

JBoss不支持类似的东西。 – BalusC

回答

0
  • 选择1:你可以尝试部署单独展开.war文件,并使用您的静态内容

你的情况:在.../jboss-7/standalone/deployments/必须有一个static.war/

所以上传到这个目录,内容以正常的方式返回。

至于详情,请参阅Is it possible to deploy an exploded war file (unzipped war) in JBoss AS 7

正如BalusC指出:不得重新部署/删除这个目录,一旦数据被上传。你应该有这个目录的定期备份。

据我所知这是唯一的可能性通过配置/设置只有


  • 选项2:与名static.war创建独立的Web应用程序。添加servlet来流静态内容

这样就没有必要上传/存储文件到下面../deployments/文件系统,它可以是任何目录,但你需要一个额外的servlet,所以它的以编程方式解决。

一个简单的流媒体servlet可以这个样子(只是流 - 没有认证等):

​​

地图的所有URL到这个servlet:

<servlet-mapping> 
    <servlet-name>DownloadServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

名称static.war提供/static/网上下文,所以应该使其与代码中的URL兼容。

+0

OP用于保存上传的文件并将其提供回去。这不与WAR一起。 – BalusC

+0

@BalusC它可能不被指定/支持,并且可能数据中心不会喜欢它。我已经测试过了,它使用JBoss 7.1.1中的一个爆炸性的.war文件:我可以将文件上传到该目录中,并以正常方式运行。 – Beryllium

+0

直到您重新部署WAR。 – BalusC

0

如果你探索jboss目录,你会发现有很多你可以用来存储不同类型的数据,如jboss.serer.data.dir。

您可以尝试通过系统属性询问此目录路径,并在该目录下将您的服务正在使用的数据存储在文件夹中。

String path = System.getProperty("jboss.server.data.dir"); 

然后,只要你想,你可以使用路径,如果如你的榜样,你直接设置目录的名称仅仅是静态的。

这应该工作,我希望:P

PS:因为以前的答案提示保存的数据将保存在该目录,你不能重新部署/删除这个目录。它会让你的数据在那里。

+0

我如何在我的jsf页面访问这个路径? – maress

+0

使用一个servlet。 – BalusC

+0

通过简单的方法使用servlet或后台bean,返回所需路径。 – LMG

1

这个问题有点旧了,但是如果有人需要用更新版本的JBoss/Wildfly来解决这个问题,可以回答一下。

JBoss AS从第8版更名为Wildfly(即Wildfly 8是JBoss AS 8),红帽支持的JBoss版本更名为JBoss EAP。因此,这适用于:

  • Wildfly(所有版本)
  • 的JBoss EAP(7版)

首先要注意的是,在GlassFish的 “备用文档根目录” 功能不起作用像那样。请看下面这个问题来解释这个特性的行为:Alternate docroot not working on glassfish 4

现在,回答这个问题,JBoss/Wildfly是建立在Undertow基础之上的,它可以让你按照你的需要去做。在这个问题上,请参考如何将高级配置文件配置为静态内容的Web服务器:How to configure Wildfly to serve static content (like images)?

+0

更新您的答案并添加适用的版本。 – ppovoski