2015-04-21 18 views
6

Tôi có ứng dụng Khởi động mùa xuân được triển khai vào thùng chứa Tomcat bên ngoài (không sử dụng vùng chứa được nhúng) và đang cố gắng thiết lập bộ truyền động. Vấn đề là management.port trong application.properties dường như không được vinh danh bởi Tomcat. Khi tôi chạy Spring Boot với Tomcat nhúng nó hoạt động tốt.Cổng Thiết bị truyền động khởi động mùa xuân khi được triển khai sang thùng chứa Tomcat bên ngoài

Ví dụ, có các thiết lập sau đây trong application.properties:

management.port=9010

điểm cuối làm việc cho container nhúng

  • http://localhost:9010/health

Non -working điểm cuối cho thùng chứa bên ngoài chạy trên cổng 8080

  • http://localhost:9010/health
  • http://localhost:8080/health
  • http://localhost:9010/<appName>/health
  • http://localhost:8080/<appName>/health

Có một cấu hình đặc biệt tôi cần trong các thùng chứa Tomcat để lộ một Spring Boot thiết bị truyền động điểm cuối?

Tôi đã thử đặt biến môi trường là MANAGEMENT_PORT. Hầu hết (hầu như tất cả) tài liệu sẵn có đang sử dụng Tomcat được nhúng, vì vậy việc theo dõi vấn đề này đã chứng minh là khó khăn. Nhận xét thứ ba về câu trả lời này cung cấp một số thông tin chi tiết có thể có: https://stackoverflow.com/a/28689853/2601060, trỏ đến tệp GitHub cho biết rằng nếu cổng quản lý chưa được đặt, cổng này sẽ giống với cổng máy chủ.

+0

Liên kết bạn đăng có câu trả lời giải thích rằng một cá thể riêng biệt được sử dụng cho bộ truyền động khi sử dụng tomcat được nhúng. Có lẽ điều đó sẽ không hoạt động khi triển khai đến một tomcat bên ngoài. Có thể có một cách để đạt được những gì bạn muốn làm, nhưng nó sẽ có được trong cấu hình tomcat bên ngoài của bạn, các thuộc tính cho tomcat nhúng sẽ không hoạt động. –

+0

@ci_ cảm ơn phản hồi - bạn có biết bất kỳ cách nào để định cấu hình trong tomcat bên ngoài không? – mnd

+0

Thật không may là không, hoặc tôi đã đăng câu trả lời. Tôi chỉ nhận xét để chỉ cho bạn đi đúng hướng. Chúng tôi sử dụng một đường dẫn ngữ cảnh riêng biệt cho các thiết bị truyền động ở đây, không phải là một cổng riêng biệt. –

Trả lời

3

Chúng tôi không thể chỉ định cổng bổ sung có vùng chứa Tomcat bên ngoài. Đây là lý do: https://github.com/spring-projects/spring-boot/issues/552

Cách duy nhất là mở rộng điểm cuối bằng cách sử dụng đường dẫn ngữ cảnh, nói "/ quản lý" và áp dụng bảo mật trên đó.

0

Có, nếu ứng dụng của bạn.properties có tài sản được gọi là "management.port: 9001" và "server.port: 9000". Sau đó, các điểm cuối ứng dụng của bạn sẽ triển khai trên cổng 9000 và các điểm cuối của thiết bị truyền động sẽ được triển khai trên cổng 9001.

Vì vậy, tùy thuộc vào chúng tôi. Chúng tôi có thể đề cập đến cả hai thuộc tính với cùng một cổng, ứng dụng sẽ hoạt động chính xác.

0

Phiên bản Java nào bạn đang chạy Tomcat7 theo?

N.B.Đây là tất cả suy đoán - Tôi chưa thể xác minh điều này được nêu ra

Nếu đó là do tôi gặp vấn đề tương tự), tôi nghi ngờ nó liên quan đến thông báo sau:

INFO: JSR 356 WebSocket (Java WebSocket 1.1) hỗ trợ không có sẵn khi chạy trên Java 6. Để ngăn chặn thông báo này, chạy Tomcat trên Java 7, loại bỏ các lọ WebSocket từ $ CATALINA_HOME/lib hoặc thêm Các JAR WebSocket tới thuộc tính tomcat.util.scan.DefaultJarScanner.jarsToSkip trong $ CATALINA_BASE/conf/catalina.properties. Lưu ý rằng API WebSocket của Tomcat 7 WebSocket không được đáp ứng sẽ khả dụng.

Tôi chỉ có thể đánh bạo đoán, rằng Boot mùa xuân sử dụng của JSR356 để nói với Web App container để "ngoài việc nghe các cổng mặc định cho các ứng dụng chính, cũng lắng nghe trên cổng X cho thiết bị đầu cuối thiết bị truyền động" .. và điều này không có sẵn dưới Java6 ... Tôi có thể sai.

Nếu bất kỳ ai có thể xác nhận/từ chối hành vi này, tôi sẽ cập nhật phản hồi này.

Sau khi thiết lập Tomcat để sử dụng Java8, và loại bỏ các lọ ổ cắm (tomcat7-websocket.jar & websocket-api.jar lọ), tôi nhận được following message from Spring:

osbaaEndpointWebMvcAutoConfiguration: Không thể khởi động chứa quản lý nhúng trên cổng khác nhau (điểm cuối là quản lý vẫn có sẵn qua JMX)

Trong khi chờ đợi, giải pháp của @ DecipherX (tức là không đặt management.port=9010) sẽ hiển thị điểm cuối thiết bị truyền động của bạn thô cổng mặc định.

0

Để làm điểm thiết bị truyền động cuối làm việc để triển khai xuân khởi động ứng dụng của chiến tranh trên tomcat bên ngoài:. 1) loại bỏ quản lý * cấu hình từ application.properties

2) URL làm việc của bạn sẽ là http://localhost:8080//sức khỏe

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