【问题标题】:Spring restController return not found 404 on wildfly在wildfly上找不到Spring restController返回404
【发布时间】:2020-02-18 20:21:55
【问题描述】:

我们有一个带有 Spring RestController 的 rest 项目,如下所示:

   @RestController("/new")
   public class NewController {
    @ResponseBody
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String testControl() {
        return "works";
    }

但是这个项目不包含启动它的引导类。而是有一个实现 AbstractAnnotationConfigDispatcherServletInitializer spring 类的内部 jar 依赖:

public class AbstractWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { AppSecurityConfig.class, DatabaseConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { ServletContextConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/*" };
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[] { new CORSFilter() };
    }
}

这个 rest 项目被编译成一个 .ear 文件以部署到 Wildfly 服务器中: EAR pom.xml

<plugin>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.10.1</version>
                <configuration>
                    <defaultLibBundleDir>APP-INF/lib</defaultLibBundleDir>
                    <skinnyWars>true</skinnyWars>
                    <version>6</version>
                    <earSourceDirectory>src/main/app</earSourceDirectory>
                    <modules>
                        <webModule>
                            <groupId>br.coop.unimed</groupId>
                            <artifactId>cmb-rest</artifactId>
                            <contextRoot>/api</contextRoot>
                        </webModule>
                    </modules>
                </configuration>
            </plugin>

当将此耳朵部署到 Wildfly 时,日志显示:

17:11:10,033 INFO [io.undertow.servlet] (ServerService 线程池 -- 95) 在类路径上未检测到 Spring WebApplicationInitializer 类型 17:11:10,620 INFO [io.undertow.servlet](ServerService 线程池—— 95) 在类路径上检测到 Spring WebApplicationInitializers: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration$JerseyWebApplicationInitializer@8a0cb6a, br.coop.unimed.config.security.SecurityWebApplicationInitializer@457597f, br.coop.unimed.config.AbstractWebInitializer@1c37aaec]

17:11:23,815 信息 [org.wildfly.extension.undertow] (ServerService 线程池 -- 95) WFLYUT0021: 注册的 web 上下文: '/api' for 服务器“默认服务器”

但是当尝试访问 http:localhost:8080/api/new/test 或 http:locallhost:8080/api/test 时,它返回 404 - Not found。

为了清楚起见,我从另一家公司继承了这个项目,该公司在另一台服务器上运行这个耳朵,即 weblogic。由于 weblogic 非常重,我试图在 wildfly 服务器上以相同的方式运行,但尽管 ear 已成功部署在服务器上并且 spring 上下文也已正确注册,但我没有成功。

有人知道会发生什么吗?

【问题讨论】:

  • 我说其他公司也没有运行这个项目 :D lawl

标签: java spring-boot wildfly ear


【解决方案1】:

请将您的代码更改为

@RestController
@RequestMapping("/new")
public class NewController {
  @ResponseBody
  @RequestMapping(value = "/test", method = RequestMethod.GET)
  public String testControl() {
      return "works";
  }
}

【讨论】:

  • 我做到了。没有什么变化。仍然没有找到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多