Jboss image upload and http access to show image--reference
question
I am uploading images to jboss server by getting the absolute path using the following code
getServletContext().getRealPath("");
The uploaded image is moved to the absolute path and I can access the image usinghttp://test.com:8080/image.jpg
My problem is the image is being uploaded to the tmp directory of jboss server, so i am losing the uploaded images in the next deployment. I tried uploading the image to various paths to make it work \jboss-5.0.1.GA\server\default\deploy and here \jboss-5.0.1.GA\server\default\work\jboss.web\localhost as well But fails, I cannot access the image using http://test.com:8080/image.jpg
Answer
You can add a new context to specify a path to access an external folder.
Steps for Jboss 4 and older versions:
- Open your file
/YOURINSTANCE_JBOSS/deploy/jboss-web.deployer/server.xml. Define a new
Contextin the tag<Host name=”localhost” ...>Example:
<Host name=”localhost” ...>
<Context path=”/myfolder” docBase=”/home/username/my_images” reloadable=”true”></Context>Where /myfolder will be the path that you are going to use to access your files, and/home/username/my_images the folder where you are going to upload your pictures.
Restart JBoss
Now you will be able to access your files with the next path:
http://yourserver:yourport/myfolder/filename
Steps for Jboss 5:
Create a new file named
context.xmlinto yourWEB-INFfolder with the next content:<?xml version="1.0" encoding="UTF-8"?>
<Context allowLinking="true" cookies="true" crossContext="true" override="true">
<Resources allowLinking="true" className="YOUR_PACKAGE.MyResources" homeDir="/home/username/my_images" />
</Context>Where className is the java class that will access the resources and homeDir your external directory.
According to this link create a new class to access your resources defined in the file
context.xmlExample:
public class MyResources extends FileDirContext { }
Now you will be able to access your files with the next function:
request.getServletContext().getResourceAsStream(uri);
Steps for Jboss 5 and older versions:
Create a new file named
context.xmlinto your WEB-INF folder with the next content:<?xml version="1.0" encoding="UTF-8"?>
<Context allowLinking="true" cookies="true" crossContext="true" override="true">
<Resources allowLinking="true" homeDir="/home/username/my_images" />
</Context>Where homeDir is your external directory.
Create a symbolic link:
YourDeployedProject.war/myfolderlinked to/home/username/my_imagesWindows:
mklink /D C:\YOUR_JBOSS_SERVER\server\default\deploy\YourDeployedProject.war\myfolder C:\users\YOURUSER\my_imagesLinux:
YourDeployedProject.war# ln -s /home/username/my_images myfolder
Now you will be able to access your files with the next path:
http://localhost:8080/DeployedProject/myfolder/filename
Steps for Jboss 7:
JBoss 7 doesn't allow any of the methods for the previous JBoss versions, so the easiest solution is to implement a Servlet to access your files like in the next link.
来源:http://stackoverflow.com/questions/17359038/jboss-image-upload-and-http-access-to-show-image
/**
* Servlet to serve files from a static directory
*/
public class FileServingServlet extends DefaultServlet
{ public void init() throws ServletException { super.init(); final Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(ProxyDirContext.HOST, resources.getHostName());
env.put(ProxyDirContext.CONTEXT, resources.getContextName()); final String docBaseProperty = getServletConfig().getInitParameter("docBaseProperty");
if (docBaseProperty == null || docBaseProperty.trim().equals("")) {
throw new RuntimeException("docBaseProperty parameter must not be blank");
} final String docBase = System.getProperty(docBaseProperty);
if (docBase == null || docBase.trim().equals("")) {
throw new RuntimeException("docBase property " + docBaseProperty + " must be set");
} final FileDirContext context = new FileDirContext(env);
context.setDocBase(docBase); // Load the proxy dir context.
resources = new ProxyDirContext(env, context); if (super.debug > 0) {
log("FileServingServlet: docBase=" + docBase);
} } } Which I use like this in the web.xml <servlet>
<servlet-name>fileServing</servlet-name>
<servlet-class>xxxx.FileServingServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>docBaseProperty</param-name>
<!-- Name of the system property containg the base dir -->
<param-value>my.basedir.directory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>fileServing</servlet-name>
<url-pattern>/directory/*</url-pattern>
</servlet-mapping> It maps to /directory the content of the local directory specified in the System property my.basedir.directory. I use such a property because I did not want to hard code the local directory in the web.xml as it can be different in various deployement context.
来源:https://community.jboss.org/thread/169647#639271
Jboss image upload and http access to show image--reference的更多相关文章
- JBoss集群中启用HTTPS协议
Generate server certificate Note: If you already have certificate created then this section can be i ...
- jboss eap6.1(1)
最近决定把公司的项目从jboss3.x迁移出来,先试着摸索一下最新的jboss服务器,从jboss官网上下了一份jboss-eap-6.1,然后找资料准备学习,同时将此次迁移过程记录下来,以备后续复习 ...
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
- Redhat Linux FTP配置
文件传输协议(FTP:FileTransfer Protocol)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接 ...
- 如何在CentOS 7上使用vsftpd设置ftp服务器
一.前言介绍 FTP(文件传输协议)是一种标准的客户机-服务器网络协议,允许用户在远程网络之间传输文件. 有几个开源的FTP服务器可用于Linux.最受欢迎和广泛使用的是pureftpd.proftp ...
- ehcache注解全面解析---打酱油的日子
通过ehcache以编程方式使用缓存: 跟上面的方式相同,但是缓存通过ehcache去管理,当然比使用map有N多种好处,比如缓存太大了快达到上限之后,将哪一部分缓存清除出去.这种方式完全是通过代码的 ...
- [salesforce] URLFOR function finally
While developing your Visualforce pages you may need to be able to obtain the URL of certain actions ...
- HttpClient通过GET和POST获取网页内容
中国银行支付网关---银行回调的接口 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面 /** * 中国银行支付网关---银行回调的接口 * @svncode svn://10. ...
- A quike guide teaching you how to use matlab to read netCDF file and plot a figure
1. Preparation 2. A brief introduce to netCDF. 4 3. Data Structure. 4 3.1 Attrib ...
随机推荐
- uboot环境变量区为何不能放在data段
一.疑问 环境变量也是全局变量,为何不能像其他的全局变量放在data段呢?为什么要放在堆中或者使用ENV_IS_EMBEDDED定义的CFG_ENV_SIZE的空间大小,又为什么需要这么大的空间呢? ...
- matlab常用小函数(一)
(第1维为对每一列操作,第2维维对每一行操作) sum 求和操作 max 求最大值操作 sum:求和操作 sum(A):矩阵A按列向求和(每一列求和),结果为一个行向量 sum(A,2):矩阵A按行向 ...
- GBin1插件推荐之马可波罗(Marco Polo),jQuery的自动补齐插件 - Autocomplete Plugin
让我们Google一下"jQuery autocomplete plugin"(jquery自动补齐插件).在过去的4年中,我已经Google了很多次这个组合了.然而结果并没有变化 ...
- [BZOJ 3942] [Usaco2015 Feb] Censoring 【KMP】
题目链接:BZOJ - 3942 题目分析 我们发现,删掉一段 T 之后,被删除的部分前面的一段可能和后面的一段连接起来出现新的 T . 所以我们删掉一段 T 之后应该接着被删除的位置之前的继续向后匹 ...
- uva 10130 SuperSale
一个01背包问题: 刚刚开始把题目看错了,以为物品的数目是有限的,然后让你求一个家庭里最多能够拿多个价值的东西: 这样一来的话,这个题目就有点意思了: 但是后来发现竟然是个简单的01背包问题 = = ...
- Android系统的体系结构、开发语言及源码结构
整理自android系统体系结构 Android 是google公司针对手机开发的一个平台,并公布了其中大部分代码,其大部分应用程序都是用JAVA开发的,毕竟它是商业性的产品嘛,有所保留也是理所 当然 ...
- 介绍一个好用的软件--多个WIN远程连接
MultiDesk v3.162015-03-16 http://www.syvik.com/multidesk/index_chs.htm MultiDesk 是一个选项卡(TAB标签)方式的远程桌 ...
- Android 文件上传 使用AsyncHttpClient开源框架
public void upload(View view) { AsyncHttpClient client = new AsyncHttpClient(); RequestParams reques ...
- 使用Sass和Compass组合写CSS
最近开始在尝试开始使用Sass来写CSS代码,刚开始虽然还是不太习惯用链式的方式写css,不过这是暂时的阶段. 如果你还不了解Sass,可以看之前发表过的文章来了解详情,Sass主要有下面这几种特性( ...
- java学习面向对象之接口
上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { ...