package jdepend.client.core.remote.analyzer;
import java.net.MalformedURLException;
import java.rmi.ConnectException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import jdepend.client.core.remote.config.ServerConfigurator;
import jdepend.framework.exception.JDependException;
import jdepend.server.service.analyzer.AnalyzerService;
/**
* 客户端Analyzer代理
*
* @author wangdg
*
*/
public final class RemoteAnalyzerProxy {
private static RemoteAnalyzerProxy proxy = new RemoteAnalyzerProxy();
private AnalyzerService analyzerService;
private static final String DEFAULT_ANALYZER_SERVICE = "rmi://localhost/AnalyzerService";
private RemoteAnalyzerProxy() {
}
public static RemoteAnalyzerProxy getInstance() {
return proxy;
}
public AnalyzerService getAnalyzerService() throws JDependException {
if (this.analyzerService == null) {
try {
analyzerService = (AnalyzerService) Naming.lookup(getAnalyzerServiceURL());
} catch (ConnectException e) {
e.printStackTrace();
throw new JDependException("连接服务器失败!", e);
} catch (MalformedURLException e) {
e.printStackTrace();
throw new JDependException("URL地址错误!", e);
} catch (RemoteException e) {
e.printStackTrace();
throw new JDependException("远程服务失败!", e);
} catch (NotBoundException e) {
e.printStackTrace();
throw new JDependException("没有查询到绑定服务!", e);
}
}
return this.analyzerService;
}
private static String getAnalyzerServiceURL() {
String analyzerServiceURL = (new ServerConfigurator()).getAnalyzerServiceURL();
if (analyzerServiceURL == null) {
analyzerServiceURL = DEFAULT_ANALYZER_SERVICE;
}
return analyzerServiceURL;
}
}