« Back to SVN

Building Liferay distribution files

Alternative Languages: 日本語

This article needs updating. For more information, see Wiki - Need Updating. Liferay now provides Nightly Builds as well.

Introduction #

This article describes how to build Liferay from the development trunk.

This article tries to give a description on how to build your own distribution file, similar to the one you download from the Liferay web site. Currently, the article only covers the Tomcat 6.0.x bundle, but it can be extended to cover other application servers.

Steps to build a distribution bundle #

Make directory structure for the //portal// and //plugins// #

  1. mkdir /development/liferay/liferay_svn
  2. mkdir /development/liferay/liferay_svn/output
  3. mkdir /development/liferay/liferay_svn/output/5.1.x
  4. mkdir /development/liferay/liferay_svn/output/5.2.x
  5. mkdir /development/liferay/liferay_svn/output/bundles-5.1.x
  6. mkdir /development/liferay/liferay_svn/output/bundles-5.2.x
  7. mkdir /development/liferay/liferay_svn/plugins

Download official Apache Tomcat distribution file from tomcat.apache.org #

Note that you have to download the zip file even if you are running on Linux. This is a pity, since with the zip file, you will have MS-DOS line endings in Tomcat config files, since the zipfile is meant for MS-DOS / Windows. Ideally, Liferay should make liferay tomcat tar.gz bundles, which we could use on Unix.

I downloaded apache-tomcat-6.0.18.zip and placed it in output/bundles-5.2.x/ directory. Then I had to extract the zip file, which resulted in a apache-tomcat-6.0.18 directory, and removed the original apache-tomcat-6.0.18.zip.

Then I renamed this directory to just tomcat-6.0.18, since that is what Liferay uses in its property files. I am pretty sure that Liferay are doing some modifications to the tomcat directory at this time.

What I did, was to remove all the content from the webapps directory, and copy the "bin/setenv.sh" from an official Tomcat bundle to the bin directory. You should also edit the conf/server.xml, by adding the URIEncoding attribute to the <Connector port="8080" and <Connector port="8009" elements. Finally, I zipped up this tomcat-6.0.18 directory in a tomcat-6.0.18.zip file using zip -r tomcat-6.0.18.zip tomcat-6.0.18

I am a bit unsure if Liferay makes other changes to the stock Apache Tomcat zip content.

Check out source from SVN #

Changes to anonymous access to Liferay's SVN UPDATED 09/03/09

The links should contain svn: followed by two slashes, but I could not figure out how to place them correctly.

  1. cd /development/liferay/liferay_svn
  2. svn checkout svn://svn.liferay.com/repos/public/portal/branches/5.2.x/ (if you want to build dist for this branch)
  3. svn checkout svn://svn.liferay.com/repos/public/portal/branches/5.1.x/ (if you want to build dist for this branch)
  4. svn checkout svn://svn.liferay.com/repos/public/portal/trunk/ (if you want to build dist for this branch)
  5. cd /development/liferay/liferay_svn/plugins
  6. svn checkout svn://svn.liferay.com/repos/public/plugins/trunk (if you want to build dist for trunk / 5.2.x branch)
  7. svn checkout svn://svn.liferay.com/repos/public/plugins/branches/5.1.x (if you want to build dist for this branch)

Note that currenlty it seems like the trunk of the plugins should be used with the 5.2.x branch for portal, since there are no such branch for plugins. You only have to check out branch 5.1.x or 5.2.x if you are going to do a build for those branches.

Make a build.properties for //plugins// that fits your needs #

(For example in /development/liferay/liferay_svn/plugins/trunk directory, if you are working with trunk) In the root directory of plugins, make a copy of build.properties, and name it build<username>.properties. Update the settings corresponding to your app server in directory layout Here is my setting

build.alf.properties file:

app.server.dir=${project.dir}/../../output/bundles-5.2.x/tomcat-6.0.18 
app.server.classes.portal.dir=${app.server.portal.dir}/WEB-INF/classes 
app.server.lib.global.dir=${app.server.dir}/lib/ext 
app.server.lib.portal.dir=${app.server.portal.dir}/WEB-INF/lib 
app.server.portal.dir=${app.server.dir}/webapps/ROOT 
javac.memoryMaximumSize=1600m

Make a build.properties, app.server.properties and release.properties for //portal// that fits your needs #

(For example in /development/liferay/liferay_svn/5.2.x if you are working on 5.2.x branch) In the root directory of "plugins", make a copy of app.server.properties, and name it app.server.<username>.properties. In the root directory of "plugins", make a copy of build.properties, and name it build.<username>.properties. In the root directory of "plugins", make a copy of release.properties, and name it release.<username>.properties. Update the settings corresponding to your app server directory layout and build layout.

app.server.alf.properties :

 app.server.type=tomcat app.server.parent.dir=${project.dir}/../output/bundles-5.2.x 
 app.server.tomcat.version=6.0 
 app.server.tomcat.dir=${app.server.parent.dir}/tomcat-6.0.18 
 app.server.tomcat.classes.global.dir=${app.server.tomcat.dir}/lib 
 app.server.tomcat.lib.endorsed.dir=${app.server.tomcat.dir}/lib/ext 
 app.server.tomcat.lib.global.dir=${app.server.tomcat.dir}/lib/ext 
 app.server.tomcat.lib.support.dir=${app.server.tomcat.dir}/lib/ext 
 app.server.tomcat.support.dir=${app.server.tomcat.dir}/lib/ext 
 app.server.tomcat.zip.name=liferay-portal-tomcat-6.0-${downloads.version}.zip

build.alf.properties :

 javac.memoryMaximumSize=1600m

release.alf.properties :

 lp.version=5.2.0
 lp.source.dir=${project.dir}/../output/5.2.x/source
 lp.ext.dir=${project.dir}/../output/5.2.x/ext
 lp.plugins.dir=${project.dir}/../plugins/trunk

Edit build-dist.xml in the root of the //portal// directory #

The dist target in this build file will build the distribution for all bundles (Tomcat, JBoss and so on). You probably just want one bundle, so you should edit the build-dist.xml file to suit your needs. Here are the modified sections of my build-dist.xml file : Here I have updated the app.server.tomcat.dir setting to point to my Tomcat version

 <target name="build-dist-tomcat-6.0">
 ...... 
 app.server.tomcat.version=6.0 
 app.server.tomcat.dir=${app.server.parent.dir}/tomcat-6.0.18

Here I have removed the hardcoded tomcat version numbers, and use the property settings instead. I have filed LPS-897 to suggest that Liferay makes the same change

 <target name="zip-tomcat-6.0"> 
	<delete file="dist/liferay-portal-tomcat-6.0-${lp.version}.zip" failonerror="false" /> 
	<antcall target="deploy-default-theme"> 
		<param name="deployer.dest.dir" value="${app.server.tomcat.deploy.dir}" /> 
		<param name="deployer.app.server.type" value="tomcat" /> 
	</antcall> 
	<antcall target="zip-executable"> 
		<param name="zip.executable.file" value="liferay-portal-tomcat-6.0" /> 
		<param name="zip.executable.dir" value="${app.server.tomcat.dir}" /> 
	</antcall>
 </target>

Here I have taken away the syncing from subversion, the building and zipping of the other bundles except Tomcat, the extraction of the plugins sdk, the zipping of the source code, and the copying of the resulting distribution builds :

 <target name="dist"> 
	<antcall target="all" /> 
	<delete dir="${lp.plugins.dir}/dist" /> 
	<ant dir="${lp.plugins.dir}/themes/liferay-jedi-theme" target="war" inheritAll="false" /> 
	<antcall target="java2html" /> 
	<antcall target="dtddoc" /> 
	<delete dir="dist" /> 
	<mkdir dir="dist" /> 
	<antcall target="zip-portal-war" /> 
	<antcall target="build-dist-tomcat-6.0" /> 
	<delete dir="${lp.ext.dir}" /> 
	<antcall target="build-ext" /> 
	<antcall target="zip-api" /> 
	<antcall target="zip-ext" /> 
	<antcall target="zip-sql" /> 
	<antcall target="zip-tomcat-6.0" /> 
	<copy file="tunnel-web/tunnel-web.war" tofile="dist/liferay-portal-tunnel-web-${lp.version}.war" /> 
 </target>

Build Liferay distribution #

Run the dist target in the build-dist.xml Ant file in the root of Liferay portal. This takes about 10 minutes on my pc. Everything that has been built is in the /development/liferay/liferay_svn/5.2.x/dist directory.

You are almost done #

You now have your own bundle zip. But this bundle does not contain the actual Liferay web application, which is part of the bundlezip you download from Liferay / SourceForge web sites.

Extract Ext environment and deploy to your Tomcat directory #

Unzip the tomcat zip bundle, and unzip the Liferay extension environment which you have built, they are both present in the /development/liferay/liferay_svn/5.2.x/dist directory. In the Liferay extension environment, make your own app.server.<username>, with settings pointing to your unzipped Liferay bundle. Now run the deploy Ant target in the Ext environment, and the Liferay web application is deployed to your Tomcat directory. You could not zip your Tomcat directory, and you would then have a zip bundle that is similar to the one you download from Liferay. I do not fully comprehend why this manual step is necessary, and why the build-dist.xml target seems to create a Tomcat zip bundle that is fairly empty, i.e. missing the Liferay web application itself.

Start Liferay #

You can now start Liferay in your Tomcat bundle, and you have a fully working and running version of Liferay.

Notes #

  • app.server.<username>.properties gets deleted
  • Note that in the "build-dist-tomcat-6.0 target in the build-dist.xml, your app.server.<username>.properties file gets deleted. So when you try to do another build, that file is missing, so you should recreate it before running the "dist" target in "build-dist.xml" again. Maybe I am missing something here, maybe we should not use an "app.server.<username>.properties file.

Explanation of directory structure /development/liferay/liferay_svn #

  • 5.1.x (this is the svn checkout of the portal 5.1.x branch)
  • 5.2.x (this is the svn checkout of the portal 5.2.x branch)
  • output/5.2.x (this is build output for the portal 5.2.x branch)
  • output/5.2.x/ext (this is build of the extension environment for the portal 5.2.x branch)
  • output/bundles-5.2.x (this is where I want my bundles to be placed)
  • output/bundles-5.2.x/tomcat-6.0.18 (this is the download apache tar.gz file extracted, and which is used by Liferay to build the distribution for Tomcat)
  • plugins/5.1.x
  • plugins/trunk
  • trunk (this is the svn checkout of the portal trunk)

Building distributions other than Tomcat-6.0 #

You should be able to follow the same description as above, but you probably have to download and extract the application server in the same manner as for Tomcat, and point the properties files to the correct path, and edit the build-dist to build your exact configuration.

0 Attachments
36693 Views
Average (0 Votes)
The average rating is 0.0 stars out of 5.
Comments
Threaded Replies Author Date
This is very helpful. Thanks for posting. Christopher Donald Sharp December 8, 2008 7:21 AM
any one can rewrite tutorial like that... Ton Hoang February 16, 2009 3:07 AM
Feb 16, 2009 6:03:17 PM... Ton Hoang February 16, 2009 3:09 AM
Is it possible to get this text to wrap? It's... Peter B West March 17, 2009 10:28 PM
Ok, I found the way to edit. Peter B West March 17, 2009 10:41 PM
I checked out the 5.2.x branch, but it contains... whyBish valid July 14, 2009 5:53 PM
Liferay's changes to Tomcat 6.0.18 are easy to... Brian Milnes October 4, 2009 12:53 PM

This is very helpful. Thanks for posting.
Posted on 12/8/08 7:21 AM.
any one can rewrite tutorial like that
http://wikis.sun.com/display/websynergy/Building+Liferay+on+Tomcat

after i use this URL build success but when start tomcat it throw error with java heap site
Posted on 2/16/09 3:07 AM.
Feb 16, 2009 6:03:17 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.5.0_06\bin;D:\Tools\portal\tomcat-6.0.18\bin
Feb 16, 2009 6:03:17 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9999
Feb 16, 2009 6:03:17 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 581 ms
Feb 16, 2009 6:03:17 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Feb 16, 2009 6:03:17 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
Loading jar:file:/D:/Tools/portal/tomcat-6.0.18/webapps/ROOT/WEB-INF/lib/portal-impl.jar­!/system.properties
Feb 16, 2009 6:03:20 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Loading jar:file:/D:/Tools/portal/tomcat-6.0.18/webapps/ROOT/WEB-INF/lib/portal-impl.jar­!/portal.properties
18:03:32,578 INFO [DialectDetector:64] Determining dialect for MySQL 5
18:03:32,781 INFO [DialectDetector:97] Using dialect org.hibernate.dialect.MySQLDialect
Loading jar:file:/D:/Tools/portal/tomcat-6.0.18/webapps/ROOT/WEB-INF/lib/portal-impl.jar­!/captcha.properties
18:03:38,000 INFO [PortalImpl:240] Portal lib directory /D:/Tools/portal/tomcat-6.0.18/webapps/ROOT/WEB-INF/lib/
18:03:56,531 INFO [ServerDetector:103] Detected server tomcat
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManagerContextListenerImpl contextInitialized
INFO: PSC_CSPCS001 : Started initializing ServiceManager
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.CoordinationService, Implementation: com.sun.portal.container.service.coordination.impl.CoordinationServiceImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.CachingService, Implementation: com.sun.portal.container.service.caching.impl.CachingServiceImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.ClientCachingService, Implementation: com.sun.portal.container.service.caching.impl.ClientCachingServiceImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.DeploymentService_Local, Implementation: com.sun.portal.container.service.deployment.impl.DeploymentServiceLocalImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.ContainerEventService, Implementation: com.sun.portal.container.service.coordination.impl.ContainerEventServiceImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS004 : Service added, Name: com.sun.portal.container.service.PolicyService, Implementation: com.liferay.portal.portletcontainer.PolicyServiceImpl
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManager addService
INFO: PSC_CSPCS018 : ClassNotFoundException: com.sun.portal.wsrp.consumer.common.DeploymentServiceRemoteImpl, while adding the service: com.sun.portal.container.service.DeploymentService_Remote
Feb 16, 2009 6:04:05 PM com.sun.portal.container.service.ServiceManagerContextListenerImpl contextInitialized
INFO: PSC_CSPCS002 : Finished initializing ServiceManager
Feb 16, 2009 6:04:05 PM com.sun.portal.portletcontainer.impl.PortletContainerContextListenerImpl contextInitialized
INFO: PSPL_PCCSPCPCI0003 : Starting PortletContainer 2.1
Starting Liferay Portal Standard Edition 5.2.1 (Augustine / Build 5201 / February 3, 2009)
Feb 16, 2009 6:04:31 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:04:31 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet threw load() exception
java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:04:32 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Sharepoint Document Workspace Servlet as unavailable
Feb 16, 2009 6:04:32 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet threw load() exception
java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:04:33 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-9999
Feb 16, 2009 6:04:33 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Feb 16, 2009 6:04:33 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47 config=null
Feb 16, 2009 6:04:33 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 75808 ms
18:06:20,593 ERROR [OpenSSOFilter:139] javax.servlet.ServletException: Filter execution threw an exception
javax.servlet.ServletException: Filter execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:259)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
­at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoL­oginFilter.java:244)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
­at com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter.processFilter(OpenS­SOFilter.java:73)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
­at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.ja­va:188)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
­at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.doFilter(Virtua­lHostFilter.java:186)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
­at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.jav­a:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2­33)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1­91)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav­a:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at­ org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at­ org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109­)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr­otocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:06:23 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:06:23 PM org.apache.catalina.core.StandardHostValve custom
SEVERE: Exception Processing ErrorPage
javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:275)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java­:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatc­her.java:438)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.j­ava:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.jav­a:302)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:424)
at­ org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:343)
at­ org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:144)
at­ org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at­ org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109­)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr­otocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
Feb 16, 2009 6:06:24 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jasper.compiler.Localizer.getMessage(Localizer.java:57)
at org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:620)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:14­4)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
­at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java­:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatc­her.java:438)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.j­ava:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.jav­a:302)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:424)
at­ org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:343)
at­ org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:144)
at­ org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at­ org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109­)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr­otocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Feb 16, 2009 6:06:24 PM org.apache.catalina.core.StandardHostValve custom
SEVERE: Exception Processing ErrorPage
org.apache.jasper.JasperException: java.lang.NullPointerException
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:15­6)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
­at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt­erChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.­java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java­:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatc­her.java:438)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.j­ava:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.jav­a:302)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:424)
at­ org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:343)
at­ org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:144)
at­ org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at­ org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109­)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr­otocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
at org.apache.jasper.compiler.Localizer.getMessage(Localizer.java:57)
at org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:620)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:14­4)
... 20 more
Posted on 2/16/09 3:09 AM in reply to Ton Hoang.
Is it possible to get this text to wrap? It's unreadable at the moment because every line is unbroken.
Posted on 3/17/09 10:28 PM in reply to Ton Hoang.
Ok, I found the way to edit.
Posted on 3/17/09 10:41 PM in reply to Peter B West.
I checked out the 5.2.x branch, but it contains no lib folder at all ???
Posted on 7/14/09 5:53 PM.
Liferay's changes to Tomcat 6.0.18 are easy to determine and the meaningful ones seem to be:
diff conf/ /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf
Only in /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf: Catalina
diff conf/catalina.properties /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf/catalina.properties
47c32
< common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar
---
> common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/l­ib/ext/*.jar
diff conf/context.xml /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf/context.xml
Only in /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf: jaas.config
diff conf/server.xml /opt/liferay-portal-5.2.3/tomcat-6.0.18/conf/server.xml
69c69
< redirectPort="8443" />
---
> redirectPort="8443" URIEncoding="UTF-8" />
88c88
< <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
---
> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
milnes@shaw:~/ws/xc/o/trunk/lr/output/bundles-5.2.x/apache-tomcat-6.0.18$ ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
milnes@shaw:~/ws/xc/o/trunk/lr/output/bundles-5.2.x/apache-tomcat-6.0.18$ diff lib/ /opt/liferay-portal-5.2.3/tomcat-6.0.18/lib
Only in /opt/liferay-portal-5.2.3/tomcat-6.0.18/lib: ext
/opt/liferay-portal-5.2.3/tomcat-6.0.18/lib/ext:
total used in directory 9812 available 256940420
drwxr-xr-x 2 root root 4096 2009-05-19 21:00 .
drwxr-xr-x 3 root root 4096 2009-05-19 20:58 ..
-rw-r--r-- 1 root root 55932 2009-05-19 21:00 activation.jar
-rw-r--r-- 1 root root 5848 2009-05-19 21:00 annotations.jar
-rw-r--r-- 1 root root 15048 2009-05-19 21:00 ccpp.jar
-rw-r--r-- 1 root root 98372 2009-05-19 21:00 container.jar
-rw-r--r-- 1 root root 643806 2009-05-19 21:00 hsql.jar
-rw-r--r-- 1 root root 25998 2009-05-19 21:00 jms.jar
-rw-r--r-- 1 root root 13236 2009-05-19 21:00 jta.jar
-rw-r--r-- 1 root root 294726 2009-05-19 21:00 jtds.jar
-rw-r--r-- 1 root root 12299 2009-05-19 21:00 jutf7.jar
-rw-r--r-- 1 root root 356519 2009-05-19 21:00 mail.jar
-rw-r--r-- 1 root root 536609 2009-05-19 21:00 mysql.jar
-rw-r--r-- 1 root root 525263 2009-05-19 20:58 portal-kernel.jar
-rw-r--r-- 1 root root 1786637 2009-05-19 20:58 portal-service.jar
-rw-r--r-- 1 root root 344731 2009-05-19 21:00 portlet-container.jar
-rw-r--r-- 1 root root 48725 2009-05-19 21:00 portlet.jar
-rw-r--r-- 1 root root 448141 2009-05-19 21:00 postgresql.jar
-rw-r--r-- 1 root root 40538 2009-05-19 21:00 saw-api.jar
-rw-r--r-- 1 root root 188993 2009-05-19 21:00 serializer.jar
-rw-r--r-- 1 root root 8700 2009-05-19 21:00 support-tomcat.jar
-rw-r--r-- 1 root root 3078601 2009-05-19 21:00 xalan.jar
-rw-r--r-- 1 root root 1203860 2009-05-19 21:00 xercesImpl.jar
-rw-r--r-- 1 root root 194205 2009-05-19 21:00 xml-apis.jar

-Brian
Posted on 10/4/09 12:53 PM.