Liferay Portal 6.x与WildFly AS 10的集成过程详解

WildFly AS是继JBoss AS之后,社区版应用服务器的首选,目前的最新版本是WildFly AS 10。

Portal容器之一,JBoss AS曾经的亲密伙伴JBoss Portal,首先结合eXo升级到GateIn Portal,继而不断更新直至2014.5发布了与JBoss AS 7集成的GateIn Portal3.8.1.Final,此后近2年时间里已经没有更新。

基于WildFly  AS的“内核+扩展”模式,GateIn Portal是以JBoss AS的扩展的方式被集成到JBoss AS中的,两者有紧密的耦合。因而要升级JBoss AS到WildFly AS并完成GateIn Portal的集成,必须熟悉GateIn Portal本身,并且需要熟悉WildFly  AS的扩展机制,最后还要了解WildFly AS中作为Web服务器,Tomcat的替代者Undertow,难度可想而知。

退而求其次,笔者选择了Liferay Portal。

相对于GateIn Portal与JBoss AS的紧密集成, Liferay Portal就显得比较中性,其本身支持与多种应用服务器的绑定,包括发布包中对Tomcat、JBoss AS、Glassfish、Jetty和Resin服务器。此外,为了便于与商业服务器的集成,Liferay Portal还提供了Liferay web应用和依赖包,以便于直接部署到商业服务器提供Portal容器。

另外,Liferay Portal还提供了丰富而详尽的文档,虽然文档与软件的发布相比有一定的滞后性,但是仍然具有重要的参考价值。

要实现Liferay Portal 6.x与WildFly AS 10的集成,笔者重点参考了"INSTALLING LIFERAY ON JBOSS 7.1"文档,具体步骤如下:

  1. 下载并解压缩WildFly AS 10,设置环境变量JBOSS_HOME指向其解压缩的根目录;
  2. 下载Liferay web应用和依赖包;
  3. 添加liferay module:
             创建目录$JBOSS_HOME/modules/com/liferay/portal/main

             将Liferay 的依赖包解压缩的jars复制到上述目录,默认包括

    • portal-service.jar
    • portlet.jar
    • hsql.jar

             在上述目录中创建module.xml文件如下

<?xml version="1.0"?>

<module xmlns="urn:jboss:module:1.0" name="com.liferay.portal">
    <resources>
        <!--resource-root path="mysql-connector-java-[version]-bin.jar" /-->
        <resource-root path="hsql.jar" />
        <resource-root path="portal-service.jar" />
        <resource-root path="portlet.jar" />
    </resources>
    <dependencies>
        <module name="javax.api" />
        <module name="javax.mail.api" />
        <module name="javax.servlet.api" />
        <module name="javax.servlet.jsp.api" />
        <module name="javax.transaction.api" />
    </dependencies>
</module>


WildFly AS的启动模式有多种,主要是独立模式standalone和域模式domain。由于域模式的限制,这里采用独立模式进行配置,修改standalone.xml(或standalone-full.xml)文件如下:

             在</extensions>元素后面添加如下内容:

           <system-properties>
               <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8" />
               <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true" />
           </system-properties>

在<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">元素中,为其子元素deployment-scanner设置deployment-timeout属性如下:

           <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
               <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" deployment-timeout="240" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
           </subsystem>
 在<subsystem xmlns="urn:jboss:domain:security:1.2">元素的<security-domains>元素中,添加新的安全域的认证方式如下: 
 

                <security-domain name="PortalRealm">
                    <authentication>
                        <login-module code="com.liferay.portal.security.jaas.PortalLoginModule" flag="required"/>
                    </authentication>
                </security-domain>


由于采用默认的HSQL,这里就不再设置数据源。




必要的情况下,设置WildFly AS的启动参数,修改$JBOSS_HOME/bin/standalone.conf(Windows平台下是$JBOSS_HOME/bin/standalone.conf.bat文件)如下:

Windows平台

set "JAVA_OPTS=-Xms256M -Xmx1024M"
...
rem # install liferay portal
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 -Djava.security.policy=$JBOSS_HOME/bin/server.policy -Djboss.home.dir=$JBOSS_HOME -Duser.timezone=GMT+8"


Linux平台

JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m"

注意:-XX:MaxPermSize参数已经在JDK 1.8中过时


修改$JBOSS_HOME/modules/system/layers/base/sun/jdk/main/module.xml文件,追加必要的path如下:

    <path name="com/sun/crypto" />
    <path name="com/sun/crypto/provider" />
    <path name="com/sun/image/codec/jpeg" />
    <path name="com/sun/org/apache/xml/internal/resolver" />
    <path name="com/sun/org/apache/xml/internal/resolver/tools" />


最后是安全性设置,创建$JBOSS_HOME/bin/server.policy文件如下:

grant {
    permission java.security.AllPermission;
};



至此,为部署Liferay Portal的准备工作就绪,下面开始部署Liferay Portal。下载的Liferay web应用就是个war文件,具体部署过程如下:

  1. 在$JBOSS_HOME/standalone/deployments目录下创建ROOT.war子目录;
  2. 将下载的war文件解压缩到ROOT.war子目录中;
  3. 删除$JBOSS_HOME/standalone/deployments/ROOT.war/WEB-INF/lib/eclipselink.jar文件
  4. 修改ROOT.war/WEB-INF/jboss-deployment-structure.xml文件

<?xml version="1.0"?>

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
	<deployment>
		<exclusions>
			<module name="org.apache.log4j" />
			<module name="org.hibernate" />
		</exclusions>
		<dependencies>
			<module meta-inf="export" name="com.liferay.portal">
				<imports>
					<include path="META-INF" />
				</imports>
			</module>
			<module name="javax.mail.api" />
			<module name="org.apache.xerces" />
			<module name="org.jboss.modules" />
		</dependencies>
	</deployment>
</jboss-deployment-structure>

重启WildFly AS,正常情况下就可以看到ROOT.war被成功部署。

打开浏览器访问http://127.0.0.1:8080/即可看到Liferay Portal的主页如下图所示。

Liferay Portal 6.x与WildFly AS 10的集成过程详解_第1张图片



你可能感兴趣的:(应用服务器,jboss,Portal,liferay,wildfly)