我们有一个使用 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/