【发布时间】:2017-05-13 06:59:07
【问题描述】:
我正在尝试使用 Wildfly Swarm 将带有静态 HTML 页面的 webapp 文件夹添加到 JAXRSArchive。但不幸的是,它没有成功。我该怎么做?
【问题讨论】:
-
问题解决了吗?我也有同样的问题。
标签: java jakarta-ee jax-rs static-content wildfly-swarm
我正在尝试使用 Wildfly Swarm 将带有静态 HTML 页面的 webapp 文件夹添加到 JAXRSArchive。但不幸的是,它没有成功。我该怎么做?
【问题讨论】:
标签: java jakarta-ee jax-rs static-content wildfly-swarm
这个问题已经过时了。但是我为遇到同样问题的人发布了这个解决方案。
如果您使用JAX-RS 而不指定@ApplicationPath,则可能会出现问题。
默认情况下,JAX-RS 侦听您应用的根 / 并覆盖标准映射。
在这种情况下,您必须像这样添加配置:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/api")
public class JaxRSConfiguration extends Application {
}
这将为您的所有JAX-RS 端点添加/api 前缀,并让您使用静态内容。
【讨论】:
您能否详细说明为什么需要自定义 main()?
首选选项是不使用自定义 main(),或者如果您必须使用自定义 main() 才能不自定义部署。
你可以调用 Swarm.deploy() ,它会创建一个默认部署,如果你的项目是战争类型,它会正常工作
【讨论】:
src/main/webapp,尝试src/main/resources,尝试添加web.xml - 仍然不乏。我还阅读了文档,但没有找到关于这个主题的任何内容。
复制src/main/webapp 中的所有静态文件,并在主方法中添加调用staticContenet,如下所示
public static void main(String... args) throws Exception {
Swarm container = new Swarm();
JAXRSArchive jaxrsDeployment = ShrinkWrap.create(JAXRSArchive.class);
jaxrsDeployment.addAsLibrary(container.createDefaultDeployment());
jaxrsDeployment.addAllDependencies();
jaxrsDeployment.staticContent();
container.start();
container.deploy(jaxrsDeployment);
【讨论】: