[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 メーリングリストの案内