2011-11-24 18 views
7

Nó là hợp pháp để xác định codebase như thế này:JNLP với codebase cục bộ - cách cập nhật?

<jnlp spec="6.0+" 
    codebase="file:/c:/MyApp/" 
    href="myapp.jnlp"> 

Khi bạn nhập này với JWS nó tạo shortcut trên desktop và các ứng dụng đang làm việc.

Tuy nhiên, một điều rất khác với cơ sở mã từ xa. Khi tôi cập nhật các tệp đó trong khi ứng dụng đang chạy, về cơ bản nó dừng hoạt động bị ngập với ClassNotFoundExceptions. Dường như JWS không sao chép các lọ, hoặc sao chép chúng ngay lập tức khi chúng được cập nhật bằng cách nào đó ghi đè lên những cái được sử dụng bởi tiến trình đang chạy.

Làm cách nào để làm việc như thể các tệp ở xa? Tức là, sao chép tệp vào bộ nhớ cache và chỉ kiểm tra các bản cập nhật khi khởi chạy.

CHỈNH SỬA: Tôi chưa tìm thấy cách nào để thực hiện và quyết định sử dụng thay thế homebrew. Trên đường đi tôi tìm thấy một số lỗi và thực hiện một số quan sát mà tôi tóm tắt tại http://squirrel.pl/blog/2011/11/24/java-web-start-bugs-offline-edition/. Đăng nó ở đây trong trường hợp nó có thể là của bất kỳ sử dụng cho một ai đó.

+0

Bạn đang cố gắng giải quyết vấn đề gì với codebase cục bộ? –

+0

Đó là ngoài điểm nhưng: Phụ thuộc vào các bản cập nhật dựa trên web chậm và dễ vỡ và tận dụng hệ thống hiện có của chúng tôi để bơm tất cả các loại tệp, cài đặt, cập nhật, v.v. để chọn máy tính. –

+1

"cập nhật dựa trên web dễ vỡ". Chỉ cần đảm bảo rằng nếu một tệp được cập nhật, nó sẽ nhận được một URL mới và cập nhật tệp JNLP cho phù hợp. –

Trả lời

-4

Trong ứng dụng của chúng tôi, codebase là:

<jnlp codebase="http://xxxx.xxx.xxx/jars"> 

và file jar bạn nên đặt trong your_webapp_root_directory/lọ. Để thử nghiệm, bạn có thể nhập url trong trình duyệt của mình: http://xxxx.xxx.xxx/jars/xxxx.jar, nếu bạn có thể tải xuống tệp xxxx.jar, nó hoạt động.

+0

Xin lỗi, nhưng tôi đã hỏi cụ thể về codebase cục bộ. Tôi không nghĩ rằng bạn đọc câu hỏi cả. –

0

Để làm cho ứng dụng của bạn tự động cập nhật, bạn nên sử dụng thẻ <update>.

<update check="always" policy="always"/> 

Và cũng nếu bạn muốn, ứng dụng của bạn có thể chạy trong sử dụng ngoại tuyến <offline-allowed/>.
Ngoài ra, để cung cấp tất cả các quyền bảo mật, bạn cần phải thêm thẻ của <security>.
Thêm các thẻ sau vào tệp JNLP của bạn.

<information> 
     <offline-allowed/> 
    </information> 

    <security> 
     <all-permissions/> 
    </security> 

    <update check="always" policy="always"/> 

    <resources> 
     <jar href="your-signed.jar" main="false" download="eager"/> 
    </resources> 
Các vấn đề liên quan