[Seasar-user:11923] [S2remoting]RoundrobinRMIConnectorのURLの付け替え
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 12月 5日 (水) 21:16:09 JST
関修康です。
RoundrobinRMIConnectorImplを利用しているのですが、
プライマリサービスが利用できない場合はサービスが停止したと見なして、
利用しないようになっているのは確認出来ました。
しかしながら、復旧対応として
roundrobinRMIConnectorImpl.addBaseURLAsString("rmi://[server]:1108/");
としてローテーションに追加しようと考えていたのですが
addBaseURLAsStringを使用するとURLが最初のURLからなめるように接続するため、
URL追加後の初回のレスポンスが悪くなりました。
そのため、対策として以下のような修正を入れたのですが
そもそも他に使い方が用意されていたりするのでしょうか?
=======================================
package org.seasar.remoting.rmi.connector.impl;
public class RoundrobinRMIConnectorImpl extends RMIConnectorImpl {
public void lookup() throws RemoteException, MalformedURLException, NotBoundException {
for (final Iterator it = baseURLs.entrySet().iterator(); it.hasNext();) {
final Entry entry = (Entry) it.next();
final String urlAsString = (String) entry.getKey();
final URL url = (URL) entry.getValue();
final URL targetURL = new URL(url, RMIAdaptor.EXPORT_NAME);
try {
adaptorStubs.add(Naming.lookup(targetURL.toString()));
}
catch (ConnectException e) {
logger.log("WRMI0001", new Object[] { urlAsString }, e);
it.remove(); // ■使えないURLは捨てる
}
}
if (adaptorStubs.isEmpty()) {
logger.log("ERMI0003", new Object[0]);
throw new ConnectException("RMI adapter is not available.");
}
}
以上、宜しくお願いいたします。
Seasar-user メーリングリストの案内