2012-10-17 36 views
5

Xin chào mọi người, làm cách nào để chạy tệp java .jar dưới dạng dịch vụ Windows trên máy chủ Windows 2008? Tôi có một tệp jar được gọi là SomeJavaFile.jar nằm trong thư mục C: \ SomeDirectory trên hộp Windows Server 2008. Tôi thường chỉ cần chạy jar này bằng tay trong dòng lệnh với: java –cp SomeJavaFile.jar com.ctg.SomeJavaFile và tôi để nó chạy 24/7.Làm cách nào để chạy tệp java .jar dưới dạng dịch vụ cửa sổ trên máy chủ Windows 2008?

Vấn đề với máy chủ Windows của chúng tôi là nếu khởi động lại, tôi cần phải chạy dịch vụ này để dịch vụ tự động khởi động như một dịch vụ khi khởi động, vì việc xử lý Vistakon của chúng tôi chạy 24/7. Tôi đã googled xung quanh và cố gắng sử dụng một wrapper dịch vụ và lệnh sc.exe để tạo ra các dịch vụ.

Tôi đặt trình bao bọc service.exe trong C: \ SomeDirectory \. Tôi sử dụng lệnh sau để tạo nó: sc.exe SomeJavaService binPath = “C: \ SomeDirectory \ service.exe \” java –jar C: \ SomeDirectory \ SomeJavaFile.jar \ ”” type = own start = auto error = ignore. Điều này tạo ra các dịch vụ SomeJavaService một cách chính xác nhưng khi tôi cố gắng để bắt đầu nó tôi nhận được một lỗi nói rằng dịch vụ trên máy tính cục bộ bắt đầu sau đó dừng lại.

Một số dịch vụ tự động dừng nếu chúng không được sử dụng bởi các dịch vụ hoặc chương trình khác. Tôi có cần phải thay đổi lệnh sc.exe của tôi để có dòng lệnh làm việc chính xác trước đó, bằng cách thêm vào com.ctg.SomeJavaFile? Vì vậy, tôi nên thay đổi jar này chỉ nên chạy trong nền và liên tục thăm dò ý kiến ​​/ ping thư mục C:/poll sau đó nếu có dữ liệu hiện nó xử lý dữ liệu và gửi một tập tin xuất khẩu vào thư mục khác.

Tôi đã sử dụng cùng một tệp .jar này trong nhiều năm và nó không thay đổi, nhưng tôi không thể làm cho nó chạy dưới dạng dịch vụ cửa sổ. Đây là trang web tôi sử dụng để tải trình bao bọc dịch vụ http://code.google.com/p/simple-service-wrapper/. Mọi sự trợ giúp sẽ rất được trân trọng!

 Shane 
+0

Chào mừng bạn đến với Stack Overflow. Vui lòng đọc Câu Hỏi Thường Gặp và cũng định dạng các câu hỏi của bạn để chúng dễ đọc hơn. –

Trả lời

0

Nếu bạn bắt đầu mã Java từ dòng lệnh bằng cách sử dụng java -j some.jar nó có chạy cho đến khi bạn chấm dứt chương trình hay tự dừng chương trình?

Có cần phải là Chủ đề không phải Deamon, luôn luôn chạy. Một JVM sẽ chấm dứt, nếu không có luồng chạy nào, nó không được gắn cờ là daemon.

Nếu bạn có một ngân sách ít, hãy mua công cụ cài đặt. Tôi sử dụng instll4j. Với công cụ đó, bạn có thể tạo trình khởi chạy dịch vụ và cài đặt chúng trong quá trình instllation.

3

"winsw" là phiên bản độc lập của gói cài đặt Dịch vụ Windows với triển khai tham chiếu Java EE Glassfish.

Hoạt động tốt, nhưng không phải là sản phẩm hoàn toàn được đánh bóng - Tôi đã sử dụng nó cho mục đích chính xác trong một vài năm. Yêu cầu .NET trong một số phiên bản gần đây trên máy Windows.

https://github.com/kohsuke/winsw

+0

Yêu cầu .Net Framework 3.5 như phiên bản hiện tại (1.9). – DonBecker

1

Tôi nghĩ rằng đặt cược tốt nhất sẽ được quấn ứng dụng java của bạn với Procrun của Apache Commons Daemon.

Procrun là tập hợp các ứng dụng cho phép người dùng Windows gói (chủ yếu) các ứng dụng Java (ví dụ: Tomcat) làm dịch vụ Windows.

Dịch vụ có thể được đặt để tự động khởi động khi máy khởi động và sẽ tiếp tục chạy mà không có người dùng nào đăng nhập vào máy.

1

Theo phân tích của tôi,

Giải pháp Nhàn rỗi sẽ được viết một VC++ (.net) chương trình tạo Windows Service để khởi động .bat (kích hoạt file jar)/exe như một dịch vụ hệ thống. với tất cả các phương thức yêu cầu gọi lại cho SCM.

Lưu ý: 1. Gói quy trình với sc.exe/srvany.exe sẽ không hoạt động vì nó không có bất kỳ quy trình gọi lại nào cho SCM (Trình quản lý điều khiển dịch vụ). 2. Và dịch vụ java Wrapper là một API của bên thứ ba (nhiều người được LGPL cấp phép).

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