请帮助我解决以下问题
我有单个liferay实例,它上面有单个网站。此单个站点为多个客户端提供服务,并使用其专用域名
访问该站点xxx.mysite.com - >客户端xxx的域名 yyy.mysite.com - >客户yyy的域名
这些域名是在位于liferay实例前面的apache web服务器中配置的。我在portal-ext.properties web.server.host中使用了property来配置liferay中的web服务器信息。 Liferay使用此属性生成页面上的所有链接(如果未提及此属性,则使用servername生成URL)。但是使用这个,我一次只能定义一个站点。我无法实现上述功能。我去了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();
}
在上面的方法中,它使用poratal-ext.properties中定义的web.server.host属性并构造URL。现在我需要覆盖此方法以在运行时确定Web服务器主机。
我的问题是。 如何在PoralImpl.java中覆盖此函数?我需要使用扩展来实现这一目标吗? 是另一种方式(更好的方式)来实现这个功能。
我正在使用liferay 6.1.0 GA-1 / tomcat bundle
答案 0 :(得分:0)
是的,覆盖Liferay核心功能(=“portal-impl.jar”中存在的代码)的唯一方法是使用ext插件,http://www.liferay.com/community/wiki/-/wiki/Main/Ext+Plugin