JBoss AS 7.2 能否像WildFly一样创建静态目录提供静态内容服务?
关于JBoss AS 7.2配置静态目录的解答
首先明确:JBoss AS 7.2 不包含Undertow子系统,Undertow是WildFly 8及后续版本才引入的Web服务器组件,因此你不能直接套用WildFly的Undertow配置方式。JBoss AS 7.2使用的是基于Tomcat 7的JBoss Web子系统,你可以通过以下两种方式实现静态目录配置:
方法1:在JBoss Web子系统中配置虚拟目录
修改你的standalone/configuration/standalone.xml(如果是域模式则修改对应domain配置文件),找到urn:jboss:domain:web对应的子系统配置段,在<virtual-server>节点下添加静态目录映射规则即可,配置示例如下:
<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <virtual-server name="default-host" enable-welcome-root="true"> <alias name="localhost"/> <!-- 新增以下静态目录映射配置 --> <context path="/mycontent" docBase="${jboss.home.dir}/content" debug="0" reloadable="true"> <parameters> <parameter name="listings" value="true" /> </parameters> </context> </virtual-server> </subsystem>
参数说明:
path:对外暴露的访问路径,示例中访问http://服务地址/mycontent即可获取静态资源docBase:服务器本地存储静态文件的目录,即你规划的用户上传文件目标目录listings参数设为true等价于WildFly配置中的directory-listing="true",开启目录列表展示功能
方法2:部署独立的静态资源WAR包
如果不想修改全局子系统配置,也可以打包一个极简的WAR应用专门提供静态资源服务:
- 创建如下目录结构的空项目:
static-content.war/ └── WEB-INF └── jboss-web.xml
- 在
jboss-web.xml中填写以下内容:
<?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>/mycontent</context-root> <virtual-directory> <virtual-path>/*</virtual-path> <real-path>${jboss.home.dir}/content</real-path> </virtual-directory> </jboss-web>
- 把
static-content.war放到JBoss AS 7.2的standalone/deployments目录下等待自动部署即可,这种方式无需修改全局配置,也不需要重启服务就能调整配置。
注意事项
- 两种配置方式都需要提前创建目标静态目录,且保证JBoss进程对该目录有读权限,如需支持用户上传还要开通写权限
- 如果开启了目录列表功能,请勿将敏感文件放入静态目录,避免信息泄露
内容的提问来源于stack exchange,提问作者MFH
相关产品推荐
相关产品推荐

