【问题标题】:Jboss image upload and http access to show imageJboss图像上传和http访问显示图像
【发布时间】:2013-06-28 07:01:46
【问题描述】:

我正在通过使用以下代码获取绝对路径来将图像上传到 jboss 服务器

getServletContext().getRealPath("");

上传的图片移动到绝对路径,我可以使用http://test.com:8080/image.jpg访问图片

我的问题是图像正在上传到 jboss 服务器的 tmp 目录,所以我在下一次部署中丢失了上传的图像。 我尝试将图像上传到各种路径以使其工作 \jboss-5.0.1.GA\server\default\deploy 这里也是 \jboss-5.0.1.GA\server\default\work\jboss.web\localhost 但是失败了,我无法使用http://test.com:8080/image.jpg访问图像

请帮我解决这个问题...

【问题讨论】:

    标签: java jboss image-uploading


    【解决方案1】:

    您可以添加新的上下文来指定访问外部文件夹的路径。

    Jboss 4 及更早版本的步骤:

    1. 打开您的文件/YOURINSTANCE_JBOSS/deploy/jboss-web.deployer/server.xml
    2. 在标签<Host name=”localhost” ...>中定义一个新的Context

      例子:

      <Host name=”localhost” ...>
      <Context path=”/myfolder” docBase=”/home/username/my_images” reloadable=”true”></Context>
      

      /myfolder 是您将用于访问文件的路径,/home/username/my_images 是您要上传的文件夹你的照片。

    3. 重启 JBoss

    现在您将能够通过下一个路径访问您的文件:

    http://yourserver:yourport/myfolder/filename
    

    Jboss 5 的步骤:

    1. 在您的 WEB-INF 文件夹中创建一个名为 context.xml 的新文件,其中包含以下内容:

      <?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>
      

      其中 className 是将访问资源和 homeDir 外部目录的 java 类。

    2. 根据这个link创建一个新类来访问你在文件context.xml中定义的资源

      例子:

      public class MyResources extends FileDirContext {
      
      }
      

    现在您将能够使用下一个功能访问您的文件:

    request.getServletContext().getResourceAsStream(uri);
    

    Jboss 5 及更早版本的步骤:

    1. 在您的 WEB-INF 文件夹中创建一个名为 context.xml 的新文件,其中包含以下内容:

      <?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>
      

      homeDir 是您的外部目录。

    2. 创建符号链接:YourDeployedProject.war/myfolder 链接到 /home/username/my_images

      窗户:

      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
      

    现在您将能够通过下一个路径访问您的文件:

    http://localhost:8080/DeployedProject/myfolder/filename
    

    Jboss 7 的步骤:

    JBoss 7 不允许以前的 JBoss 版本使用任何方法,因此最简单的解决方案是实现一个 Servlet 来访问您的文件,就像在下一个 link 中一样。

    【讨论】:

    • 非常感谢您的回答。我无法处理 jboss-web.deployer 文件夹。我在这个位置有另一个 jboss-5.0.1.GA\server\default\deploy\jbossweb.sar 对吗?
    • 也许就是那个。我已经在我们的服务器 JBoss 4.2.2AS 中完成了这个配置(我想在 JBoss 5 中不会有那么不同)。检查文件server.xml是否在您评论的文件夹中。
    • 如果我在 server.xml 中添加代码,服务器不会启动。还有另一个名为 context.xml 的文件。如果我在这里添加,服务器中的应用程序都没有运行。
    • @Jeyasithar 在 JBoss 论坛中查找它我发现了这个:issues.jboss.org/browse/JBAS-6368 似乎从版本 5 开始,它只有在您的外部文件夹位于 JBOSS_HOME/server/default/deploy 时才有效。
    • 很高兴听到这个消息。感谢您的回答。我现在试过了。但是服务器还没有启动。可能是我以错误的方式使用。您能否相应地编辑答案,以便我可以实施相同的方法。再次感谢。
    猜你喜欢
    • 2016-01-11
    • 2018-10-10
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多