Java 生命射线团

Java 生命射线团,java,glassfish,liferay,Java,Glassfish,Liferay,您知道关于在Glassfish中安装Liferay群集的分步教程吗?Liferay是一个Spring/Hibernate应用程序,不依赖于服务器,您的大多数群集配置应该是门户(-ext)的群集部分。属性文件:Hibernate、EHCache和JGroup配置。与部署的任何web应用一样,唯一特定于应用服务器的配置应该是会话故障切换 谷歌帮我找到了一个叫做 享受吧 我正在处理同一个问题,或者非常类似的问题——将Liferay WAR文件部署到具有两个节点的glassfish集群。我还没有完全正确

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

Liferay是一个Spring/Hibernate应用程序,不依赖于服务器,您的大多数群集配置应该是门户(-ext)的群集部分。属性文件:Hibernate、EHCache和JGroup配置。与部署的任何web应用一样,唯一特定于应用服务器的配置应该是会话故障切换

谷歌帮我找到了一个叫做


享受吧

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

这是我必须做的

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

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

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

下一步:portal-ext.properties覆盖文件的位置?答案再次出现在liferay war文件的WEB-INF/classes中。这也是我们每次修改属性时都需要重新部署的一个重要原因,如上所述

下一步:上下文。默认情况下,liferay尝试部署到根上下文“/”。我们在一个共享环境中,因此我们将战争部署到上下文/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.dialogue.oracle=org.apache.lucene.store.jdbc.dialogue.Oracledialogue

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

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

我还必须将jackrabbit的repository.xml文件放在WEB-INF/classes中。该xml文件告诉jackrabbit要使用哪些数据库连接参数(有关更多详细信息,请参阅Apache的jackrabbit配置页面)。再说一次,我不确定把它放在WEB-INF/类中是正确的想法,但它可能必须放在WAR文件中的某个地方,或者放在某个共享文件系统中,以便集群中的所有节点共享相同的数据

我还没有弄乱EHcache,但我确实在hibernate属性中添加了:

hibernate.dialogue=org.hibernate.dialogue.Oracle10gDialogue

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

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

运行liferay的用户没有修改/opt的权限,在集群环境中,这是一个坏主意。我不确定背景在哪里,因为当我看的时候,我看到的都是

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

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

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

不幸的是,将liferay部署到集群环境还没有很好的文档记录,但我希望分享这一点对您有所帮助


祝你好运

如果您查找PropsUtil的源代码,那么您将找到SystemProperties.set(“default.liferay.home”,_getDefaultLiferayHome());这将基于app server检测liferay home。所有应用程序服务器都类似:SystemProperties.get(“jetty.home”)+“/…”;如果未设置系统属性,则它将变为null/。。那太糟糕了