从 Wildfly 服务器使用 HTTP 访问文件

Posted

技术标签:

【中文标题】从 Wildfly 服务器使用 HTTP 访问文件【英文标题】:Access file using HTTP from Wildfly server 【发布时间】:2016-03-22 12:03:48 【问题描述】:

我遇到了一个与 Wildfly(JBoss) 中通过 HTTP 访问文件有关的问题。 我正在 Wildlfy-9.0.1.Final 上运行应用程序

在我的应用程序中有一个点击链接,它应该打开相应的文件并显示其内容。但是当我点击链接时,它给了我 404-Not found 错误。

我可以看到该文件存在于与锚标记中 href 给出的相同路径上。我不明白给出 404 错误是什么意思。

我是否需要在 Wildfly 中启用任何其他设置才能通过 HTTP 访问文件。如果有,请指教。

编辑:

我在<handlers> 的路径是这样的

path="/usr/local/jboss/server/default/deploy/"

此目录结构尚未完成,因为在运行时将使用实际文件所在的 java 代码动态附加更多路径。

例如:path="/usr/local/jboss/server/default/deploy/demo/1/filename"

其中/usr/local/jboss/server/default/deploy/是静态路径,demo/1/filename是动态的。

同样在/directory-listing-urilocation 中,某些路径是在tun 时动态生成的。

例如: 假设下面是directory-listing-uri

http://[wildfly host]:[port]/static/dynamic/dynamic/dynamicFileName.iif

所以我不确定 wildfly 将如何满足我显示文件的目的。

如有错误请指正。

【问题讨论】:

@Rémi 你能帮我解决这个问题吗?请查看我的最新编辑问题 您好,在您之前的问题版本中,您说您想使用来自应用程序外部目录的“动态路径”创建和下载文件。所以我已经回答了这个问题。现在您的问题已经改变,因为您想公开位于 EAR 中的文件(为什么不将这些文件放在 EAR 中打包的 WAR 目录中呢?)我建议您恢复上一个问题的更改(因为问题是现在真的不一样了),放回我回答的以前的版本,关闭它(如果你认为它正确回答了外部文件夹文件列表),然后问一个新的。 我还要补充一点,在我看来,在你的爆炸 EAR 中创建文件不是一件好事,如果可能的话,你最好在外部位置创建它们。 是的,您对外部文件夹文件列表的回答是正确的。我刚刚恢复了更改,并将针对我当前的问题启动新线程 @Rémi 这是我的新线程***.com/questions/34353346/… 【参考方案1】:

要公开文件列表(和下载)的目录,您可以在standalone.xml 配置中添加两个配置元素(如果您将wildfly 作为独立服务器运行),如下所示:

<subsystem xmlns="urn:jboss:domain:undertow:2.0">
     ...
     <server name="default-server">
         ...
         <host name="default-host" alias="localhost">
             ...
             <location name="/directory-listing-uri" handler="directory-listing-handler"/>
             ...
         </host>
         ...
     </server>
     ...
     <handlers>
         ...
         <file name="directory-listing-handler" path="/home/example/..." directory-listing="true"/>
     </handlers>
     ...
</subsystem>

注意:jboss-cli配置可以看this answer

然后,您将在此位置获得一个漂亮的目录列表 GUI:

http://[wildfly host]:[port]/directory-listing-uri

【讨论】:

嘿,我试过你上面提到的。但是我仍然被困在我的pathdirectory-listing-uri 中的更多部分是动态的。那么您能否在问题中查看我的编辑并就此提出建议?谢谢你的时间。 :) 使用 directory-listing=true 在此位置动态创建的所有文件和文件夹都可用。所以我猜你必须提供这些从后端到前端的动态路径或计算它们。 Hey Remi 我之前解释的场景是错误的。对此感到抱歉。但现在我指的是在部署文件夹中运行的爆炸战争中的一些文件,但仍然无法通过 http 访问文件。请参阅我的最新编辑。谢谢 我已经实现了上述答案并且工作正常。那么如果我想要来自多个目录的数据怎么办。任何建议。

以上是关于从 Wildfly 服务器使用 HTTP 访问文件的主要内容,如果未能解决你的问题,请参考以下文章

Wildfly 图像和 http 访问以显示图像

AWS Linux 实例:访问 JBoss Wildfly 控制台

如何从 Wildfly (Jboss) 为 ws 端点访问 CXF jar

Wildfly 远程访问管理控制台不起作用

当我无法访问 CLI 工具时,如何关闭 JBoss Wildfly?

wildfly 实践5 ---分布式服务中的JMS服务访问