0

以下の問題で私を助けてください

単一の liferay インスタンスがあり、その上に単一のサイトがあります。この単一のサイトは複数のクライアントにサービスを提供しており、クライアントは専用のドメイン名を使用してサイトにアクセスします

xxx.mysite.com -> クライアントのドメイン名 xxx yyy.mysite.com -> クライアントのドメイン名 yyy

これらのドメイン名は、liferay インスタンスの前にある Apache Web サーバーで構成されます。liferay で Web サーバー情報を構成するために、portal-ext.properties web.server.host のプロパティを使用しました。Liferay は、このプロパティを使用してページ上のすべてのリンクを生成します (このプロパティが言及されていない場合、サーバー名を使用して URL を生成します)。しかし、これを使用すると、一度に 1 つのサイトしか定義できません。上記の機能を達成できません。私はliferayコードに行きました.PortalImpl.javaには次のコードがあります

public String getPortalURL(
    String serverName, int serverPort, boolean secure) {

    StringBundler sb = new StringBundler();

    if (secure || Http.HTTPS.equals(PropsValues.WEB_SERVER_PROTOCOL)) {
        sb.append(Http.HTTPS_WITH_SLASH);
    }
    else {
        sb.append(Http.HTTP_WITH_SLASH);
    }

    if (Validator.isNull(PropsValues.WEB_SERVER_HOST)) {
        sb.append(serverName);
    }
    else {
        sb.append(PropsValues.WEB_SERVER_HOST);
    }

    if (!secure) {
        if (PropsValues.WEB_SERVER_HTTP_PORT == -1) {
            if ((serverPort != Http.HTTP_PORT) &&
                (serverPort != Http.HTTPS_PORT)) {

                sb.append(StringPool.COLON);
                sb.append(serverPort);
            }
        }
        else {
            if (PropsValues.WEB_SERVER_HTTP_PORT != Http.HTTP_PORT) {
                sb.append(StringPool.COLON);
                sb.append(PropsValues.WEB_SERVER_HTTP_PORT);
            }
        }
    }

    if (secure) {
        if (PropsValues.WEB_SERVER_HTTPS_PORT == -1) {
            if ((serverPort != Http.HTTP_PORT) &&
                (serverPort != Http.HTTPS_PORT)) {

                sb.append(StringPool.COLON);
                sb.append(serverPort);
            }
        }
        else {
            if (PropsValues.WEB_SERVER_HTTPS_PORT != Http.HTTPS_PORT) {
                sb.append(StringPool.COLON);
                sb.append(PropsValues.WEB_SERVER_HTTPS_PORT);
            }
        }
    }

    return sb.toString();
}

上記の方法では、portal-ext.properties で定義された web.server.host プロパティを使用して URL を構築します。ここで、このメソッドを上書きして、実行時に Web サーバー ホストを決定する必要があります。

私の質問は。この関数を PoralImpl.java で上書きするには? これを達成するために拡張機能を使用する必要がありますか? この機能を実現する別の方法 (より良い方法) はありますか。

liferay 6.1.0 GA-1/tomcat バンドルを使用しています

4

1 に答える 1

0

はい、Liferay のコア機能 (= "portal-impl.jar" に存在するコード) をオーバーライドする唯一の方法は、ext プラグインを使用することです: http://www.liferay.com/community/wiki/-/wiki/Main/ Ext+プラグイン

于 2012-12-09T18:35:27.820 に答える