4

我通过使用以下代码获取绝对路径将图像上传到 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访问图像

请帮我解决这个...

4

1 回答 1

6

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

Jboss 4 及旧版本的步骤:

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

    例子:

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

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

  3. 重启 JBoss

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

http://yourserver:yourport/myfolder/filename

Jboss 5的步骤:

  1. context.xml使用以下内容在您的文件夹中创建一个名为的新文件WEB-INF

    <?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. 根据此链接创建一个新类来访问文件中定义的资源context.xml

    例子:

    public class MyResources extends FileDirContext {
    
    }
    

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

request.getServletContext().getResourceAsStream(uri);

Jboss 5 及旧版本的步骤:

  1. 使用以下内容创建一个名为context.xmlWEB-INF 文件夹的新文件:

    <?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 来访问您的文件,如下一个链接所示。

于 2013-06-28T07:10:04.717 回答