从 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-uri
和location
中,某些路径是在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
【讨论】:
嘿,我试过你上面提到的。但是我仍然被困在我的path
和directory-listing-uri
中的更多部分是动态的。那么您能否在问题中查看我的编辑并就此提出建议?谢谢你的时间。 :)
使用 directory-listing=true 在此位置动态创建的所有文件和文件夹都可用。所以我猜你必须提供这些从后端到前端的动态路径或计算它们。
Hey Remi 我之前解释的场景是错误的。对此感到抱歉。但现在我指的是在部署文件夹中运行的爆炸战争中的一些文件,但仍然无法通过 http 访问文件。请参阅我的最新编辑。谢谢
我已经实现了上述答案并且工作正常。那么如果我想要来自多个目录的数据怎么办。任何建议。以上是关于从 Wildfly 服务器使用 HTTP 访问文件的主要内容,如果未能解决你的问题,请参考以下文章
AWS Linux 实例:访问 JBoss Wildfly 控制台
如何从 Wildfly (Jboss) 为 ws 端点访问 CXF jar