java - Spring RestController 在 Wildfly 上返回未找到 404

标签 java spring-boot wildfly ear

我们有一个使用 Spring RestController 的 Rest 项目,如下所示:

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

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

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() };
    }
}

这个剩余项目被编译成 .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>

当将这只耳朵部署到野蝇时,日志显示:

17:11:10,033 INFO [io.undertow.servlet] (ServerService Thread Pool -- 95) No Spring WebApplicationInitializer types detected on classpath 17:11:10,620 INFO [io.undertow.servlet] (ServerService Thread Pool -- 95) Spring WebApplicationInitializers detected on classpath: [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 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 95) WFLYUT0021: Registered web context: '/api' for server 'default-server'

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

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

有人知道会发生什么吗?

最佳答案

请将您的代码更改为

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

关于java - Spring RestController 在 Wildfly 上返回未找到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60288873/

相关文章:

java - Spring Boot 自定义错误 Controller 返回空 JSON 响应

java - 使用@KafkaListener在Kafka中批量消费消息

java - wildfly 8 日志记录机制的默认错误处理程序

maven - 异常: Multiple service implementations found for interface DeployableContainer when running Arquillian tests

java - sql insert语句设置行成比例

java - 如何用 Java 编写 Facebook 应用程序?

Spring Boot-无效的访问 token 错误

java - 如何通过java使用JSOUP抓取和下载HTML页面中的表格

java - 使用@Inject Instance获取实现特定接口(interface)的EJB和CDI bean

java - Wildfly - 模块 - 确定包和依赖信息的 'proper' 方法是什么?