【发布时间】: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