[英]Spring restController return not found 404 on wildfly
我們有一個帶有 Spring RestController 的休息項目,如下所示:
@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>
當將這只耳朵部署到野蠅時,日志說:
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.AbstractWebInitializera]
和
17:11:23,815 信息 [org.wildfly.extension.undertow](ServerService 線程池 - 95)WFLYUT0021:注冊的 Web 上下文:服務器“默認服務器”的“/api”
但是當嘗試訪問 http:localhost:8080/api/new/test 或 http:locallhost:8080/api/test 時,它返回 404 - Not found。
為了清楚起見,我從另一家公司繼承了這個項目,該公司在另一台服務器上運行這個耳朵,即 weblogic。 由於weblogic非常重,我試圖在wildfly服務器上以相同的方式運行,但盡管ear已成功部署在服務器上並且spring上下文也已正確注冊,但我還是沒有成功。
有誰知道可能會發生什么?
請將您的代碼更改為
@RestController
@RequestMapping("/new")
public class NewController {
@ResponseBody
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String testControl() {
return "works";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.