JBoss 系列五十七:JBoss 7/WildFly Virtual Directory Mapping
来源:互联网 发布:软件协会官网 编辑:程序博客网 时间:2024/04/29 07:03
概述
我们经常有这样的需求,假設有個 Test.war 部署至JBoss后, 在浏览器输入
http://xxx.xxx.xx/Test/mypic/a.jpg可看到图片a.jpg,而且不將a.jpg打包放在Test.war里面,a.jpg是放置在外部目录,例如/tmp/img。Weblogic的http://docs.oracle.com/cd/E11035_01/wls100/webapp/weblogic_xml.html#wp1039396实现这一功能,他是自己集成了一套方法,用户通过配置可以完成,大致配置如下:
<virtual-directory-mapping> <local-path>c:/usr/gifs</local-path> <url-pattern>/images/*</url-pattern> <url-pattern>*.jpg</url-pattern></virtual-directory-mapping><virtual-directory-mapping> <local-path>c:/usr/common_jsps.jar</local-path> <url-pattern>*.jsp</url-pattern></virtual-directory-mapping>
JBoss默认没有这种设置,我们需要通过自定义Servlet来完成。
JBoss 7/WildFly Virtual Directory Mapping
假设/tmp/img下有大量图片,我们需要在JBoss中通过http://localhost:8080/virtual-directory-mapping/image/*来获取/tmp/img下的图片。
假如/tmp/img下有图片jboss_logo.png,我们则可以通过http://localhost:8080/virtual-directory-mapping/image/jboss_logo.png访问到/tmp/img下的jboss_logo.png。
具体实施非常简单,我们通过自定义应用来完成(Servlet中获取a.jpg的输入流,通过response的OutputStream写给请求端),具体如https://github.com/kylinsoong/wildfly-architecture/.../FileServlet.java所示,我们定义basePath的value为/tmp/img
@WebServlet(urlPatterns = "/image/*", initParams = { @WebInitParam(name = "basePath", value = "/tmp/img") })
则当部署应用virtual-directory-mapping到JBoss后,通过
http://localhost:8080/virtual-directory-mapping/image/jboss_logo.png
可以获取到/tmp/img下面的jboss_logo.png。
另外
https://community.jboss.org/thread/173207
http://balusc.blogspot.in/2009/02/fileservlet-supporting-resume-and.html
也涉及到此问题,也可供参考。
JBoss 7/WildFly Virtual Directory Mapping所使用到的代码链接https://github.com/kylinsoong/wildfly-architecture/tree/master/virtual-directory-mapping
使用系列一所示的方法,克隆编译生成virtual-directory-mapping.war,使用系列三所示的方法部署virtual-directory-mapping.war到JBoss.
其他
我们还可以使用其它方法完成这一需求。
创建 Symbolic links
在Linux操作系统,我们创建 Symbolic links可以满足这一需求,比如在Linux系统/tmp/img下有jboss_logo.png,我们执行如下命令:
ln -s /tmp/img $DEPLOYMENT/test.war/img创建Symbolic links,然后可以通过test.war访问jboss_logo.png,如下:
http://localhost:8080/test/img/jboss_logo.png
将图片放置于welcome-content下
JBOSS_HOME下有welcome-content目录,将上面img目录放置于JBOSS_HOME/welcome-content下,我们可以通过
http://localhost:8080/img/jboss_logo.png
获取jboss_logo.png。
- JBoss 系列五十七:JBoss 7/WildFly Virtual Directory Mapping
- JBoss 系列四十八:JBoss 7/WildFly 使用TCP构建集群
- JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表
- JBoss 系列六十四:部署JMX MBean到JBoss 7/WildFly
- JBoss 系列五:JBoss 7/WildFly中配置使用Oracle数据库
- JBoss 系列六:JBoss 7/WildFly中配置使用JMS消息队列
- JBoss 系列五十二:JBoss 7/WildFly中替换默认的欢迎Web应用
- JBoss 系列五十三:JBoss 7/WildFly 集群之 HornetQ Messaging - I(基本理论)
- JBoss 系列五十四:JBoss 7/WildFly 集群之 HornetQ Messaging - II(示例)
- JBoss 系列五十五:JBoss 7/WildFly 集群之 HornetQ Messaging - III(示例补充说明)
- JBoss 系列五十六:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - I(基本理论)
- JBoss 系列 六十:JBoss 7/WildFly中配置使用Mysql数据库
- JBoss 系列六十六:JBoss 7/WildFly 集群之无状态会话Bean集群 - II(示例)
- JBoss 系列六十八:JBoss 7/WildFly 集群之有状态会话Bean集群 - II(示例)
- JBoss 系列六十五:JBoss 7/WildFly 集群之无状态会话Bean集群 - I(基本理论)
- JBoss 系列六十七:JBoss 7/WildFly 集群之有状态会话Bean集群 - I(基本理论)
- JBoss 系列八十九: JBoss 7/WildFly 中如何阻止一个模块被默认加载
- WildFly(JBoss)创建虚拟目录
- AL技面问题
- oracle误操作(drop,update,删除误操作恢复)
- iOS消息推送的一些事情
- 类别和协议
- 路由协议的重分布------多协议网络之间从无法识别彼此的协议到网络的相互连通
- JBoss 系列五十七:JBoss 7/WildFly Virtual Directory Mapping
- vc 数据库使用方法
- Xcode 增加本地化文件Localizable.string的步骤
- php的单元检测和代码依赖性检测
- F# reference.
- 3G模块PPPD拨号流程分析
- 文艺青年之——图片链接
- 访问IO设备
- Ubuntu 安装 tex