2017-02-22 57 views
8

Có kế hoạch nào trong Java 9 (đặc biệt là Ghép hình) để hỗ trợ các yêu cầu đặc biệt của các đại lý giám sát Java không?Hỗ trợ ghép hình Java 9 cho javaagent

Thông thường, các đại lý giám sát yêu cầu khả năng truy cập lớp, gói và mô-đun không có sẵn theo mặc định đối với các ứng dụng Java gốc. Các tác nhân giám sát được nạp vào JVM thông qua đối số dòng lệnh -javaagent không được nạp dưới dạng mô đun, ngay cả khi tệp jar chứa tệp mô-đun-info.class. Cách duy nhất mà tôi đã có thể cung cấp cho đại lý giám sát của tôi với các quyền mà nó cần là thêm các đối số dòng lệnh cung cấp các quyền này cho tất cả các mô-đun chưa được đặt tên.

Trả lời

6

Instrumentation class was extended bằng phương pháp cho phép xác định lại bất kỳ mô-đun nào. Nó cho phép bạn thêm các thành phần phụ đọc, xuất khẩu, mở ra, tập quán dịch vụ và providings:

void redefineModule(Module module, 
        Set<Module> extraReads, 
        Map<String,Set<Module>> extraExports, 
        Map<String,Set<Module>> extraOpens, 
        Set<Class<?>> extraUses, 
        Map<Class<?>,List<Class<?>>> extraProvides); 

Ngoài ra, ClassFileTransformer API đã được mở rộng để đăng ký một Java Module khi một chuyển đổi:

default byte[] transform(Module module, 
         ClassLoader loader, 
         String className, 
         Class<?> classBeingRedefined, 
         ProtectionDomain protectionDomain, 
         byte[] classfileBuffer) 
        throws IllegalClassFormatException; 

Module này, kết hợp với API thiết bị cho phép bất kỳ điều chỉnh cần thiết nào.

Hiện tại, các tác nhân Java vẫn được tải trên đường dẫn lớp mà không áp dụng bất kỳ mô đun hóa nào; tuy nhiên, điều này có thể thay đổi khi Java 9 vẫn chưa hoàn thành.

+0

Cảm ơn bạn. Điều này đã giúp rất nhiều. Đã thử phương thức redefineModule() mới và có vẻ như chúng ta cần – BradW