spring boot app可以作为可执行jar运行,但不能作为部署在jboss EAP 6上的战争

时间:2015-02-20 05:12:36

标签: java jboss7.x spring-boot

我正在开发一个使用camel和cxf的spring-boot应用程序。我还包括弹簧启动器 - 启动器 - 执行器。执行应用程序作为可执行jar或作为部署到Tomcat 8的war时,执行器端点(例如/ beans,/ info,/ env)工作正常。但是,当我向JBoss EAP 6(AS 7)部署相同的战争时执行器端点返回一个404的http状态。我已经尝试在我的pom.xml中包含以下依赖项,但文档没有成功。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
        <scope>provided</scope>
    </dependency>

我的应用程序类看起来像

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;
import org.springframework.web.WebApplicationInitializer;

import java.util.Arrays;

@SpringBootApplication 
public class EsbApplication extends SpringBootServletInitializer {


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

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

}

关于如何在JBoss EAP中使用执行器端点的任何想法

谢谢!

1 个答案:

答案 0 :(得分:3)

JBoss EAP 6 servlet映射看起来像/ *而不是/

为了避免添加web.xml,我不得不将以下内容添加到我的SpringBootServletInitializer类

@Override
public void onStartup(ServletContext container) throws ServletException {
    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
    ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(context));
    registration.setLoadOnStartup(1);
    registration.addMapping("/*"); // required JBOSS EAP 6 / AS 7
    super.onStartup(container);
}