2014-12-20 27 views
6

Tôi có một ứng dụng khởi động mùa xuân rất đơn giản mà tôi muốn triển khai cho Jboss EAP. Đây là lớp ứng dụng đơn giản của tôi:ứng dụng springBoot trên Jboss EAP, bối cảnh servlet không loda

@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 + "!"; 
    } 
} 

và tệp pom.xml của tôi cũng rất cơ bản. Khi tôi chạy ứng dụng này trên Tomcat, sử dụng Tomcat nhúng những gì tàu với khởi động mùa xuân. Tất cả mọi thứ hoạt động như sự quyến rũ chỉ trong một cú nhấp chuột. Tôi có thể truy cập http://localhost:8080/demo/hello/World và nó cũng hoạt động.

Bây giờ tôi đã cố gắng để làm cho nó chiến tranh tương thích Jboss EAP, tôi vô hiệu hóa Tomcat bằng cách loại trừ từ spring-boot-starter-web, và chuyển đổi nó thành một dự án chiến tranh. (theo đề xuất của bài viết http://spring.io/blog/2014/03/07/deploying-spring-boot-applications).

Tôi cũng nói thêm:

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

như nó đã phàn nàn.

Bây giờ sau khi tất cả điều này, nó biên soạn tốt và tạo ra một cuộc chiến tranh quá. Khi tôi sao chép cuộc chiến này để triển khai jboss, tôi có thể thấy nó được triển khai thành công trên bảng điều khiển. Nhưng api còn lại http://localhost:8080/demo/hello/World chỉ không hoạt động và không ngừng ném lỗi trên trình duyệt:

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

Tôi đang làm gì sai?

Trả lời

6

trả lời là ở đây: Spring Java Config vs Jboss 7

Rõ ràng "/" không hoạt động trên Jboss EAP 6.3, nhưng "/ *" hoạt động. và dường như đã khắc phục sự cố với con ruồi hoang dã 8

2

Bạn đã đề cập đến JBoss 6 trong thẻ của mình. Dựa trên kinh nghiệm của tôi Spring Boot Autoconfigure và JBoss 6 (cụ thể) là một sự cố. Nếu Hot Deploy được bật hoặc có thể một số điều kiện khác JBoss VFS thực hiện một số quét tích cực của tất cả các lọ trong tập tin chiến tranh. Một khi nó bắt đầu quét các lớp trong module autoconfigure, nó sẽ hủy bỏ do một lỗi giống như ClassNotFoundException. Nếu bạn đang sử dụng Autoconfigure, một giải pháp có thể là đặt các mô-đun mùa xuân trong lib của Container. Nhưng điều này sẽ làm cho việc triển khai trở nên khó sử dụng. Tôi không nhìn thấy hành vi này trên JBoss 7 cũng không Wildfly 8.

+1

Thực ra - Hiện tại tôi có thể triển khai thành công nhiều Ứng dụng Khởi động Mùa xuân bằng JBoss 6. Chìa khóa cho thành tích này là sử dụng tệp jboss-scanning.xml được triển khai trong bình để cho JBoss không thử và tải mọi lớp trong Autoconfigure lib . Có một số điều chỉnh khác cũng như tôi đã có ý nghĩa để viết lên nhưng jboss-scanning.xml là chìa khóa. – juice

14

mặt hàng này trong Spring Boot Reference Guide, thêm dòng dưới đây trong application.properties nộp

server.servlet-path=/* 

thử nghiệm điều này trong JBoss EAP 6.2 và làm việc tốt.

+1

Điều này phù hợp với chúng tôi. – jax

+1

hoạt động. Tôi nghĩ lời giải thích nằm trong câu trả lời được đánh dấu chính xác. – ravindrab

Các vấn đề liên quan