Spring引导应用程序在Jboss EAP中,servlet上下文未加载

时间:2014-12-20 03:25:24

标签: maven-3 spring-boot jboss-eap-6

我有一个非常简单的Spring启动应用程序,我想部署到Jboss EAP。这是我的简单应用程序类:

@SpringBootApplication

public class MayurApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(MayurApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    private static Class<MayurApplication> applicationClass = MayurApplication.class;
}

@RestController
class GreetingController {

    @RequestMapping("/hello/{name}")
    String hello(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

我的pom.xml也非常基础。当我在Tomcat上运行这个应用程序时,使用带有spring boot的嵌入式Tomcat。只需点击一下,一切都像魅力一样。我可以访问http://localhost:8080/demo/hello/World,也可以。

现在我试图让它与Jboss EAP兼容的战争,我通过从spring-boot-starter-web中排除来禁用Tomcat,并将其转换为war项目。 (如文章http://spring.io/blog/2014/03/07/deploying-spring-boot-applications所示)。

我还补充说:

<dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                 <scope>provided</scope>
            </dependency>,

因为它在抱怨。

现在,经过这一切,它编译得很好并且也创造了一场战争。当我将此战争复制到jboss部署时,我可以看到它在控制台上成功部署。 但是其余的api http://localhost:8080/demo/hello/World只是不起作用并且不断地在浏览器上抛出错误:

JBWEB000068: message /demo/hello/World
JBWEB000069: description JBWEB000124: The requested resource is not available.

我做错了什么?

3 个答案:

答案 0 :(得分:17)

Spring Boot Reference Guide中找到此内容,在application.properties文件中添加以下行

server.servlet-path=/*

在jBoss EAP 6.2中进行了测试并且工作正常。

答案 1 :(得分:6)

答案在这里:Spring Java Config vs Jboss 7

显然“/”在Jboss EAP 6.3上不起作用,但“/ *”有效。 他们似乎已经用wildfly 8修复了它

答案 2 :(得分:2)

你在标签中提到了JBoss 6。根据我的经验,Spring Boot Autoconfigure 和JBoss 6(具体)是不行的。如果打开了Hot Deploy或者某些其他条件,JBoss VFS会对war文件中的所有jar执行一些积极的扫描。一旦它开始扫描autoconfigure模块中的类,它将因类似于ClassNotFoundException的错误而中止。如果使用自动配置,一种解决方案可能是将弹簧模块放在Container的lib中。但这会使部署变得笨拙。我没有在JBoss 7和Wildfly 8上看到这种行为。