【问题标题】:Wildfly Swarm JAXRSArchive add webapp directoryWildfly Swarm JAXRSArchive 添加 webapp 目录
【发布时间】:2017-05-13 06:59:07
【问题描述】:

我正在尝试使用 Wildfly Swarm 将带有静态 HTML 页面的 webapp 文件夹添加到 JAXRSArchive。但不幸的是,它没有成功。我该怎么做?

【问题讨论】:

  • 问题解决了吗?我也有同样的问题。

标签: java jakarta-ee jax-rs static-content wildfly-swarm


【解决方案1】:

这个问题已经过时了。但是我为遇到同样问题的人发布了这个解决方案。

如果您使用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 前缀,并让您使用静态内容。

【讨论】:

    【解决方案2】:

    您能否详细说明为什么需要自定义 main()?

    首选选项是不使用自定义 main(),或者如果您必须使用自定义 main() 才能不自定义部署。

    你可以调用 Swarm.deploy() ,它会创建一个默认部署,如果你的项目是战争类型,它会正常工作

    【讨论】:

    • 我喜欢基于 Java 的方法。而且这种部署自定义在大多数 wildfly-swarm 示例中都使用(例如添加 swagger)。对我来说,这似乎是更好的方法,但没有很好的记录。
    • 大部分示例和文档都是自定义部署,所以不会容易很多。
    • 如果你真的需要一个自定义 main() 因为你需要以某种方式自定义 WAR,使用 Swarm.createDefaultDeployment() 给你一个相当于 Maven WAR 打包而不是构造的 Archive一切从头开始
    • @ken 那么如何使静态 html 与 wilfdly swarm 一起工作?我遇到了同样的问题。我使用 JAX-RS 和 CDI 通过wildfly-swarm.io/generator 生成了一个项目。我没有自定义它。我尝试将 htmls 放入src/main/webapp,尝试src/main/resources,尝试添加web.xml - 仍然不乏。我还阅读了文档,但没有找到关于这个主题的任何内容。
    【解决方案3】:

    复制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);
    

    【讨论】:

    • 我做了同样的事情,但它不适合我。也许我错过了什么?
    • 您可以检查 jar/war 的内容,看看它们是否正确添加
    • 这是个问题。他们没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多