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:

  1. Open your file /YOURINSTANCE_JBOSS/deploy/jboss-web.deployer/server.xml.
  2. Define a new Context in 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.

  3. Restart JBoss

Now you will be able to access your files with the next path:

http://yourserver:yourport/myfolder/filename

Steps for Jboss 5:

  1. Create a new file named context.xml into 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" 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.

  2. According to this link create a new class to access your resources defined in the file context.xml

    Example:

    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:

  1. Create a new file named context.xml into 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.

  2. Create a symbolic link: YourDeployedProject.war/myfolder linked to /home/username/my_images

    Windows:

    mklink /D C:\YOUR_JBOSS_SERVER\server\default\deploy\YourDeployedProject.war\myfolder C:\users\YOURUSER\my_images

    Linux:

    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的更多相关文章

  1. JBoss集群中启用HTTPS协议

    Generate server certificate Note: If you already have certificate created then this section can be i ...

  2. jboss eap6.1(1)

    最近决定把公司的项目从jboss3.x迁移出来,先试着摸索一下最新的jboss服务器,从jboss官网上下了一份jboss-eap-6.1,然后找资料准备学习,同时将此次迁移过程记录下来,以备后续复习 ...

  3. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  4. Redhat Linux FTP配置

    文件传输协议(FTP:FileTransfer Protocol)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接 ...

  5. 如何在CentOS 7上使用vsftpd设置ftp服务器

    一.前言介绍 FTP(文件传输协议)是一种标准的客户机-服务器网络协议,允许用户在远程网络之间传输文件. 有几个开源的FTP服务器可用于Linux.最受欢迎和广泛使用的是pureftpd.proftp ...

  6. ehcache注解全面解析---打酱油的日子

    通过ehcache以编程方式使用缓存: 跟上面的方式相同,但是缓存通过ehcache去管理,当然比使用map有N多种好处,比如缓存太大了快达到上限之后,将哪一部分缓存清除出去.这种方式完全是通过代码的 ...

  7. [salesforce] URLFOR function finally

    While developing your Visualforce pages you may need to be able to obtain the URL of certain actions ...

  8. HttpClient通过GET和POST获取网页内容

    中国银行支付网关---银行回调的接口 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面 /** * 中国银行支付网关---银行回调的接口 * @svncode svn://10. ...

  9. 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 ...

随机推荐

  1. BZOJ 4011 开店

    Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的想法当然非常好啦,但是她们也发现她们 ...

  2. 一个短路求值引起的一个小bug

    今天在写一个判断字符串是否回文时因为短路求值问题导致了一个bug,记录如下: 代码如下 bool isPal(char str[],int len) { int begin=0; int end=le ...

  3. 3d max export for unity3d

    3d max export for unity3d @by 广州小龙 1.单位问题 建模的时候,设置unity的Units Setup的单位是Meters,导出FBX文件的时候,单位为厘米(Centi ...

  4. Spring REST

    前面介绍过Spring的MVC结合不同的view显示不同的数据,如:结合json的 view显示json.结合xml的view显示xml文档.那么这些数据除了在WebBrowser中用JavaScri ...

  5. ibatis动态的传入表名、字段名

    ibatis动态的传入表名.字段名,主要传入表名和字段名的不一致. Java代码: Map<String,Object> params = new HashMap<String,Ob ...

  6. [cocos2d demo]新科娘收集水表

    讲述的是新科娘在沙滩上遇到一大波水表的故事... 下载地址 链接:http://pan.baidu.com/share/link?shareid=2141087190&uk=293716439 ...

  7. 分析WordPress主题结构是如何架构的?

    利用强大的技术,可以把基于WordPress的网站做成各种各样的形式,这除了要求WordPress主题开发人员精通HTML,PHP,JS,CSS等技术,还需要开发者掌握WordPress主题的框架.下 ...

  8. Bluetooth LE(低功耗蓝牙) - 第五部分

    回顾: 在本系列前面的文章中我们完成了发现BLE传感器并与之建立连接.现在只剩下从其中获取数据了,但是这并没有看起来那么简单.在这篇文章中我们将讨论GATT的特点以及如何促进主机与传感器之间的数据交换 ...

  9. ASP.NET 中Request.QueryString 中的key

    在ASP.net中 的Key是可能为null的,例如在如下的Url中 http://localhost:14546/Home/Index?a 有一个key=null 其value是a,以前一直以为ke ...

  10. 制作手机浏览器显示格式的HTML页面

    最近要推出手机支持访问的HTML页面效果,而这在制作手机页面的过程中状况连连. 主要一下就我制作的工程中所遇的问题说明一下: 1. 改掉HTML页面声明:(以往大部分页面都是HTML4.0的声明) 还 ...