【问题标题】:Liferay Cluster [closed]Liferay 集群 [关闭]
【发布时间】:2009-05-28 13:03:38
【问题描述】:

你知道关于在 Glassfish 中安装 Liferay 集群的分步教程吗?

【问题讨论】:

    标签: java glassfish liferay


    【解决方案1】:

    Google 找到了我这篇名为 how-to-install-and-configure-a-liferay-cluster 的文章

    享受吧!

    【讨论】:

      【解决方案2】:

      我正在解决同样的问题,或者非常相似的问题——将 Liferay WAR 文件部署到具有两个节点的 glassfish 集群。我还没有完全正确地配置它,但我确实成功部署了它。也许这对你也有帮助,我们可以比较一下。

      这是我必须做的。

      首先,基础工作。 GlassFish 部署 WAR 的方式对我来说有点奇怪。据我了解,WAR 文件是由节点代理在某处爆炸的,但是一旦它们被部署,您就无法访问这些文件。这意味着当您调整配置文件(portal-ext.properties)时,您每次都需要重新部署——Liferay 相当大,约为 73MB。这将定期导致 PermGen 空间不足异常,并要求您重新启动集群。因此,明智的做法是设置 JVM 选项以增加 glassfish 中 PermGen 空间的大小。这里有一个很好的问题解释:

      http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space

      该 JVM 选项不会解决问题,但会增加集群重启之间的延迟(glassfish 控制台无法重启,顺便说一句;我们必须通过命令行来完成)。

      下一个问题是:依赖 JAR 文件去哪里了?我们在运行其他服务的共享集群中运行,因此将其放在 domain/domain1/lib 文件夹中是行不通的。我们将依赖项 JAR 文件保存在 liferay war 文件中,在 WEB-INF/lib 中,它似乎对此很满意。

      下一步:portal-ext.properties 覆盖文件在哪里?答案再次在 WEB-INF/classes 中的 liferay 战争文件中。这也是我们每次修改属性时都需要重新部署的一个重要原因。

      下一步:上下文。默认情况下,liferay 尝试部署到根上下文“/”。我们处于共享环境中,因此我们将 WAR 部署到上下文 /lr1。在 portal-ext.properties 中,我们必须设置属性

      portal.ctx=/lr1

      下一步:在集群环境中使用嵌入式 HSQL 没有多大意义;我们使用 GlassFish 为我们的数据库连接池设置了一个 JNDI 名称。 Liferay 文档指南中有关于如何执行此操作的说明。在 portal-ext.properties 文件中,我们可以将

      jdbc.default.jndi.name=jdbc/LiferayPool

      我们也不想在文件系统上存储 Lucene 索引。我们覆盖了 portal-ext.properties 文件中的这些属性来解决这个问题:

      lucene.store.type=jdbc

      lucene.store.jdbc.auto.clean.up=true

      lucene.store.jdbc.dialect.oracle=org.apache.lucene.store.jdbc.dialect.OracleDialect

      类似的逻辑适用于 JackRabbit 存储库;我目前有以下属性设置(我不知道这是否正确,但文档库正在运行):

      jcr.jackrabbit.repository.root=WEB-INF/classes/

      我也不得不将jackrabbit 的repository.xml 文件放到WEB-INF/classes 中。该 xml 文件告诉 jackrabbit 使用哪些数据库连接参数(有关详细信息,请参阅 Apache 的 Jackrabbit 配置页面)。同样,我不确定将其放在 WEB-INF/classes 中是否正确,但它可能必须放在 WAR 文件中的某个位置,或者位于某个共享文件系统上,以便集群中的所有节点共享相同的数据.

      我还没有弄乱 EHcache,但我确实放入了 hibernate 属性:

      hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

      对于我们的 oracle 数据库。我相信它使用上面的默认 JDBC 属性来引用我们的 JNDI 数据库连接。

      “Liferay 主目录”变量是“服务器主目录上方的一个文件夹”的概念是我仍在努力解决的问题,它导致我每次发送与 /opt/ 相关的 HTTP 请求时都会出错ee/许可证。

      liferay 运行的用户没有修改 /opt 的权限,无论如何这在集群环境中是个坏主意。我不确定设置在哪里,因为当我查看时,我看到的只是

      liferay.home=${resource.repositories.root}

      resource.repositories.root=${default.liferay.home}

      我还不知道 default.liferay.home 是在哪里定义的;仍在努力。

      遗憾的是,将 liferay 部署到集群环境的文档还没有那么完善,但我希望分享这些对您有所帮助。

      祝你好运!

      【讨论】:

      • 如果你查看 PropsUtil 的来源,你会发现 SystemProperties.set("default.liferay.home", _getDefaultLiferayHome());这会根据应用服务器检测 liferay home。所有应用服务器都类似: SystemProperties.get("jetty.home") + "/..";如果未设置系统属性,它将变为 null/.. 这很糟糕
      【解决方案3】:

      Liferay 是一个与服务器无关的 Spring / Hibernate 应用程序,您的大部分集群配置应该是您的门户(-ext).properties 文件的集群部分:Hibernate、EHCache 和 JGroup 配置。唯一的应用服务器特定配置应该是会话故障转移,就像在部署的任何 Web 应用中一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-28
        • 1970-01-01
        • 2020-05-24
        • 2011-01-08
        • 2017-06-09
        • 1970-01-01
        • 2017-01-29
        • 2016-08-23
        相关资源
        最近更新 更多