2010-07-01 35 views
15

Tôi đang làm việc trên một plugin Eclipse cần kết nối với máy chủ từ xa. Tôi đang cố gắng sử dụng các cài đặt mạng Eclipse để có được proxyHost và Cổng. Tôi đã có thể nhận proxy cài đặt "thủ công" bằng cách sử dụng các lớp IProxyServiceIProxyData cũng như cài đặt proxy "Gốc" nếu được đặt trong máy cục bộ. Vấn đề xảy ra khi proxyProvider được đặt thành Native và các giá trị proxyHost và Port được hiển thị dưới dạng động trong cài đặt Eclipse. Có cách nào để truy cập các giá trị đó không?Làm cách nào để truy cập proxy động từ cài đặt mạng nhật thực?

Cảm ơn.

+1

Không động = tính theo hàm javascript, dựa trên máy chủ đích không? Bạn đã thử sử dụng phương pháp IProxyService.select (URI) và chỉ định url mục tiêu của bạn ở đó chưa? –

Trả lời

0

Vấn đề của bạn là giai đoạn kết nối trình cắm thêm của bạn được thực thi trước khi Eclipse xác định máy chủ khi chạy? Đó là sự khác biệt duy nhất tôi thấy giữa các định nghĩa tĩnh và động của các cài đặt mạng của Eclipse.

0

Sau đây luôn làm việc cho tôi khi đặt proxy.

System.setProperty("https.proxyHost", "myproxy.domain.com"); 
System.setProperty("https.proxyPort", "myport"); 
1

Thanks for the guys phản ứng,

Điều này có thể được thực hiện bằng cách sử dụng lớp IProxyService trong nhật thực. Đoạn mã dưới đây đã sử dụng sự phản chiếu trong một số trường hợp mà bạn có thể bỏ qua. Ngoài ra hãy xem tại liên kết này (http://www.vogella.de/blog/2009/12/08/eclipse-rcp-proxy-preference/)

1) Nhận proxy tracker

private ServiceTracker getProxyTracker() throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { 
    if (proxyTracker != null) 
     return proxyTracker; 

    String proxyServiceClassName = "org.eclipse.core.net.proxy.IProxyService"; 
    String bundleClassName = "org.osgi.framework.Bundle"; 
    Class bundleClass = Class.forName(bundleClassName); 
    Method getBundleContextMth = bundleClass.getMethod("getBundleContext", null); 
    getBundleContextMth.setAccessible(true); 

    BundleContext bundleCntx = (BundleContext) getBundleContextMth.invoke(bundle, null); 
    proxyTracker = new ServiceTracker(bundleCntx, proxyServiceClassName, null); 
    proxyTracker.open(); 

    return proxyTracker; 
} 

2) Sử dụng phương pháp "isProxiesEnabled" để kiểm tra xem proxy được kích hoạt

3) Tùy theo Phiên bản nhật thực sử dụng phương thức "getProxyDataForHost" hoặc "chọn" để truy cập thông tin proxy nhật thực (máy chủ, userID, mật khẩu, v.v.).

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