<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>liferay &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/liferay/</link>
	<description>Feed of posts on WordPress.com tagged "liferay"</description>
	<pubDate>Thu, 21 Aug 2008 08:11:30 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Setup Jboss Ent. With Liferay Portal]]></title>
<link>http://maxi326.wordpress.com/?p=82</link>
<pubDate>Mon, 30 Jun 2008 08:26:13 +0000</pubDate>
<dc:creator>maxi326</dc:creator>
<guid>http://maxi326.wordpress.com/?p=82</guid>
<description><![CDATA[My Environment
Jboss Boss AS Ent. 4.3.0.G.A
LifeRay Portal 4.4.2
MySql 5.0.45 community
(Linux and W]]></description>
<content:encoded><![CDATA[<p>My Environment</p>
<p>Jboss Boss AS Ent. 4.3.0.G.A</p>
<p>LifeRay Portal 4.4.2</p>
<p>MySql 5.0.45 community</p>
<p>(Linux and Windows almost use the same setting steps)</p>
<p>1. run the Jboss AS installer to install it.</p>
<p>Windows : double click</p>
<p>Linux : terminal&#62;java -jar enterprise-installer-4.3.0.GA-1.ep1.8.jar</p>
<p>2. install MySql from its installer.</p>
<p>3. download 3 files of liferay :</p>
<p>liferay-portal-4.4.2-with-dependencies.war</p>
<p>liferay-portal-dependencies-4.4.2.zip</p>
<p>liferay-portal-sql-4.4.2.zip</p>
<p>4. create an utf-8 database in your mysql, I use lportal as database name here.</p>
<p>mysql&#62;create database lportal character set utf8;</p>
<p>5. unpack liferay-portal-sql-4.4.2.zip, import the database dump under [unpack]/create-minimal/create-minimal-mysql.sql</p>
<p>mysql -uroot lportal &#60; [path from above]/create-minial-mysql.sql --default-character-set=utf8</p>
<p>6. open [JBOSS_HOME]/jboss-as/server/default/deploy/jboss-web.deployer/conf/web.xml</p>
<p>Replace :</p>
<pre>&#60;servlet&#62;
&#60;servlet-name&#62;default&#60;/servlet-name&#62;
&#60;servlet-class&#62;org.apache.catalina.servlets.DefaultServlet&#60;/servlet-class&#62;
&#60;init-param&#62;
&#60;param-name&#62;debug&#60;/param-name&#62;
&#60;param-value&#62;0&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;init-param&#62;
&#60;param-name&#62;listings&#60;/param-name&#62;
&#60;param-value&#62;true&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;load-on-startup&#62;1&#60;/load-on-startup&#62;
&#60;/servlet&#62;</pre>
<p>With :</p>
<pre>&#60;servlet&#62;
&#60;servlet-name&#62;default&#60;/servlet-name&#62;
&#60;servlet-class&#62;org.apache.catalina.servlets.DefaultServlet&#60;/servletclass&#62;
&#60;init-param&#62;
&#60;param-name&#62;debug&#60;/param-name&#62;
&#60;param-value&#62;0&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;init-param&#62;
&#60;param-name&#62;listings&#60;/param-name&#62;
&#60;param-value&#62;false&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;init-param&#62;
&#60;param-name&#62;input&#60;/param-name&#62;
&#60;param-value&#62;4096&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;init-param&#62;
&#60;param-name&#62;output&#60;/param-name&#62;
&#60;param-value&#62;4096&#60;/param-value&#62;
&#60;/init-param&#62;
&#60;load-on-startup&#62;1&#60;/load-on-startup&#62;
&#60;/servlet&#62;</pre>
<p>7. create [JBOSS_HOME]/jboss-as/server/default/deploy/liferay-ds.xml</p>
<pre>&#60;?xml version="1.0"?&#62;
&#60;datasources&#62;
	&#60;local-tx-datasource&#62;
		&#60;jndi-name&#62;jdbc/LiferayPool&#60;/jndi-name&#62;
		&#60;connection-url&#62;jdbc:mysql://hostname:3306/lportal&#60;/connection-url&#62;
		&#60;driver-class&#62;com.mysql.jdbc.Driver&#60;/driver-class&#62;
		&#60;user-name&#62;&#60;/user-name&#62;
		&#60;password&#62;&#60;/password&#62;
		&#60;min-pool-size&#62;5&#60;/min-pool-size&#62;
	&#60;/local-tx-datasource&#62;
&#60;/datasources&#62;</pre>
<p>8. Download mysql-connector-java-5.1.5-bin.jar, copy to [JBOSS_HOME]/jboss-as/server/default/lib/</p>
<p>9. Unpack liferay-portal-dependencies-4.4.2.zip to [JBOSS_HOME]/jboss-as/server/default/lib/</p>
<p>resulting structure will be like this :</p>
<p>[JBOSS_HOME]/jboss-as/server/default/lib/liferay-portal-dependencies-4.4.2/portlet.jar</p>
<p>/portal-kernel.jar</p>
<p>/portal-service.jar</p>
<p>10 .Setup mail properties, open [JBOSS_HOME]/jboss-as/server/default/deploy/mail-service.xml</p>
<p>modify : User, Password, pop3.host, smtp.host, mail.from</p>
<p>11. Open [JBOSS_HOME]/jboss-as/server/default/conf/login-config.xml, comment out the entire &#60;application-policy name="other"&#62;</p>
<p>12. unpack liferay-portal-4.4.2-with-dependencies.war, rename the unpacked folder to liferay-portal.war</p>
<p>Move dom4j.jar, jaxen.jar from liferay-portal.war/WEB-INF/lib to [JBOSS_HOME]/jboss-as/lib</p>
<p>Move commons-collections.jar from liferay-portal.war/WEB-INF/lib to [JBOSS_HOME]/jboss-as/server/default/lib (overwrite it if it is already there)</p>
<p>remove hibernate3.jar, jboss-hibernate.jar from [JBOSS_HOME]/jboss-as/server/default/lib</p>
<p>Move liferay-portal.war to [JBOSS_HOME]/jboss-as/server/default/deploy/</p>
<p>13. open [JBOSS_HOME]/jboss-as/server/default/deploy/jbossjca-service.xml</p>
<p>change &#60;attribute name="Debug"&#62;true&#60;/attribute&#62;</p>
<p>to &#60;attribute name="Debug"&#62;false&#60;/attribute&#62;</p>
<p>14. open [JBOSS_HOME]/jboss-as/server/default/deploy/jboss-messaging.sar/destinations-service.xml</p>
<p>clear all text between &#60;server&#62;&#60;/server&#62;</p>
<p>15. open [JBOSS_HOME]/jboss-as/bin/run.conf</p>
<p>modify the JAVA_OPTS setting to this one</p>
<pre>      JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"</pre>
<p>16. But in my experience, JBoss Ent. may not pick up this setting in windows, so</p>
<p>Windows : open [JBOSS_HOME]/jboss-as/bin/run.bat</p>
<p>find : rem JVM memory allocation pool parameters. Modify as appropriate.</p>
<p>change the line follow this one to</p>
<pre>set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m</pre>
<p>17. start Jboss AS, beware that there are more then one AS : All, default, minimal, production.</p>
<p>The one we setup is default, you can start by</p>
<p>Windows : [JBOSS_HOME]/jboss-as/bin/run.bat -c default</p>
<p>Linux : [JBOSS_HOME]/jboss-as/bin/run.sh -c default</p>
<p>18. open http://localhost:8080, you should see liferay running</p>
<p>19. change the Jboss AS to allow remote connection and bind to port 80</p>
<p>open [JBOSS_HOME]/jboss-as/server/default/deploy/jboss-web.deployer/server.xml</p>
<p>change :</p>
<pre>    &#60;Connector port="8080" address="${jboss.bind.address}"
         maxThreads="250" maxHttpHeaderSize="8192"
         emptySessionPath="true" protocol="HTTP/1.1"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" /&#62;</pre>
<p>to :</p>
<pre>    &#60;Connector port="80" address="0.0.0.0"
         maxThreads="250" maxHttpHeaderSize="8192"
         emptySessionPath="true" protocol="HTTP/1.1"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" /&#62;</pre>
<p>Then reboot JBoss AS.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Liferay - Hibernate]]></title>
<link>http://techzen.wordpress.com/?p=248</link>
<pubDate>Mon, 23 Jun 2008 21:53:55 +0000</pubDate>
<dc:creator>techzen</dc:creator>
<guid>http://techzen.wordpress.com/?p=248</guid>
<description><![CDATA[On using transaction Manager provided by Spring
http://nerdnotes.wordpress.com/2007/03/30/basic-tran]]></description>
<content:encoded><![CDATA[<p>On using transaction Manager provided by Spring</p>
<p>http://nerdnotes.wordpress.com/2007/03/30/basic-transactions-in-spring-using-transactionproxyfactorybean/</p>
<p>ServiceBuilder</p>
<p>http://wiki.liferay.com/index.php/Services%2C_entities%2C_and_ServiceBuilder</p>
<p>http://www.javalobby.org/articles/thread-safe/index.jsp</p>
<p>http://www.sleberknight.com/blog/sleberkn/</p>
<p>Unable to resolve the issue of Hibernate session not bound to thread in Liferay when creating a new persistence class extending basePersistence. Guess I would need to read up on spring hibernate configuration for tx mgmt.</p>
<p>Until then would use PortalJNDIUtil for the DataSource.</p>
<p>Really I thought I could solve the Hibernate issue - but its been almost a day now and no solution found,. Need to move on - would come back on this later:</p>
<p>[sourcecode lang='xml']</p>
<p><!--  my service class - Implementation class --><!--  my transaction wrapper over service implementation --><br />
    <!-- bean id="com.liferay.co.AppAuthService.impl" class="com.liferay.co.AppAuthServiceImpl" lazy-init="true"/><br />
    <bean id="com.liferay.co.AppAuthService.transaction" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true"></p>
<property name="transactionManager">
            <ref bean="liferayTransactionManager" /><br />
        </property>
<property name="target">
            <ref bean="com.liferay.co.AppAuthService.impl" /><br />
        </property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
            </props>
        </property>
    </bean> --></p>
<p>    <!-- bean id="com.liferay.co.AuthJsonBuilder.impl" class="com.liferay.co.AppAuthServiceImpl" lazy-init="true"/></p>
<property name="dataSource">
            <ref bean="liferayDataSource" /><br />
        </property>
<property name="sessionFactory">
            <ref bean="liferaySessionFactory" /><br />
        </property>
<p>    </bean> --></p>
<p>[/sourcecode]</p>
<p>The configuration of Service classes and Persistence classes in portal-spring.xml is as follows:<br />
<span><span style="color:#008000;">================</span></span><span><span style="color:#008000;">================<br />
</span></span>LSLocal.iLS.mpl - nothing<br />
LSLocal.Tx  -  TxMgr,Target (LSLocal.impl),TxAttr<br />
LSFactory - svc - LSLocal.Tx<br />
<span style="color:#008080;">================</span><span><span style="color:#008000;">================<br />
</span></span>LS.impl<br />
LS.Tx - LS.impl<br />
LSFactory - svc LS.Tx<br />
<span style="color:#008000;">================</span><span><span style="color:#008000;">================</span></span><br />
LSPersis.Impl<br />
LSPersis.Tx - Target - LSPersis.impl<br />
LSUtil<br />
<span><span style="color:#008000;">================</span></span><span><span style="color:#008000;">================</span></span></p>
<p><a href="http://www.liferay.com/web/guest/products/portal/architecture/spring_hibernate">http://www.liferay.com/web/guest/products/portal/architecture/spring_hibernate</a><br />
<a href="http://www.javalobby.org/articles/thread-safe/index.jsp">http://www.javalobby.org/articles/thread-safe/index.jsp</a><br />
<a href="http://www.ibm.com/developerworks/web/library/wa-spring2/">http://www.ibm.com/developerworks/web/library/wa-spring2/</a><br />
<a href="http://www.sleberknight.com/blog/sleberkn/">http://www.sleberknight.com/blog/sleberkn/</a></p>
<p>To show the tags in the journal content portlet:(Code from liferay forum)</p>
<p>==============================</p>
<p>#set ($tagsService = $serviceLocator.findService("com.liferay.portlet.tags.service.TagsAssetLocalService"))<br />
#set ($journalArticleResourceService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleResourceLocalService"))</p>
<p>#set ($longGroupId = $getterUtil.getLong($groupId))<br />
#set ($articleResourcePK = $journalArticleResourceService.getArticleResourcePrimKey($longGroupId, $reserved-article-id.data))<br />
#set ($tagsAsset = $tagsService.getAsset("com.liferay.portlet.journal.model.JournalArticle", $articleResourcePK))<br />
#set ($tagsEntries = $tagsAsset.getEntries())</p>
<p>Tags:<br />
#foreach( $entry in $tagsEntries )<br />
#set ($tag = $entry.getName())<br />
#if($velocityCount!=1), #end<br />
$tag#end</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Adobe Out In the Open with Alfresco]]></title>
<link>http://bmoc.wordpress.com/?p=104</link>
<pubDate>Fri, 20 Jun 2008 00:15:05 +0000</pubDate>
<dc:creator>Lee Dallas</dc:creator>
<guid>http://bmoc.wordpress.com/?p=104</guid>
<description><![CDATA[When Marko posted his report card for the EMC Documentum OEM edition I thought it was a fair assessm]]></description>
<content:encoded><![CDATA[<p>When Marko posted his <a href="http://bmoc.wordpress.com/2008/06/17/emc-documentums-oem-platform/">report card for the EMC Documentum OEM</a> edition I thought it was a fair assessment of the offering. The fact that EMC has based it on the 5.5 release and not D6 was troubling though. Turns out the post was far more timely than we realized. Now that <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200806/061708AdobeLiveCycleES.html">Adobe has announced</a> they will be incorporating content management services to LiveCycle by embedding Alfresco, the choices EMC and others are making in the OEM space are more critical than ever.<!--more--></p>
<p>CTO of Alfresco and Documentum Co-Founder John Newton <a href="http://feeds.feedburner.com/~r/ContentLog/~3/314127941/adobe-embeds-al.html">blogged on the deal</a> recently. He took the opportunity to claim that this kind of relationship shows content management to be on par with database technologies where integrations and OEM relationships are concerned. That position may be a bit optimistic. If anything, the arrangement is a testament to the good job Alfresco has done delivering on the promise of commercially viable open source content management. To get where John wants to go, the industry has to mature around real standards. (<a href="http://wordofpie.wordpress.com/2008/03/18/ecm-a-working-definition-for-the-next-generation/">insert applause from Pie here</a>)</p>
<p>The whole idea of an OEM relationship is to enhance not overwhelm the product that is including your software.  I don't know all of the reasons that EMC elected to OEM the 5.x code level rather than D6 but from my experience, D5 is much easier to run on a laptop. Anyone who has worked with D6 understands that the footprint of the platform is more <a href="http://en.wikipedia.org/wiki/Bigfoot">Sasquatch</a>-like than ever.</p>
<p>I suppose the party line my be they want to maintain a degree of competitive advantage by not making the D6 capabilities part of the OEM product but something tells me they tried it and quickly passed the point of diminished return in the effort. There is simply too much baggage to overcome.</p>
<p>I've spent a good deal of time in the last few months working with <a href="http://www.liferay.com">LifeRay</a>. They truly get the open source to OEM model and have a number of successes to show for it. There is even a <a href="http://wiki.liferay.com/index.php/Full_Liferay-Alfresco_Integration">LifeRay-Alfresco</a> bundle that is very handy.  Adobe itself is not a stranger to content management as they have their own <a href="http://www.adobe.com/products/contribute/">light weight WCMS.</a> When it came to enterprise class CM they have heretofore relied on the likes of Documentum. Now LiveCycle is very much a one-stop shop for this class of forms management.</p>
<p>If everything works as advertised, It will become more difficult over time justifying complex Documentum integration for LiveCycle if you can remain in the boundaries of the platform.  For others looking for a CMS to OEM and they need it PDQ to get ROI - (sorry about that) - Alfresco now has a marquee reference that's impossible to ignore.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Liferay PermissionChecker Explained.]]></title>
<link>http://joeshum.wordpress.com/?p=8</link>
<pubDate>Thu, 12 Jun 2008 22:30:09 +0000</pubDate>
<dc:creator>joeshum</dc:creator>
<guid>http://joeshum.wordpress.com/?p=8</guid>
<description><![CDATA[For my latest task I’ve been looking into re-implementing the persistence layer of Liferay permiss]]></description>
<content:encoded><![CDATA[<p><span style="font-size:medium;">For my latest task I’ve been looking into re-implementing the persistence layer of Liferay permissions to authenticate users and obtain authorization data from a client identity and access management engine. In the process I thought I’d explain a little bit about the details of Liferay permissions and in this first post more specifically the PermissionChecker. How it’s implemented and where the integration points are. </span></p>
<p><span style="font-size:medium;"> </span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">So how does the portal determine what permissions to grant each user? In Liferay, permissions can be associated with a user in a few different ways. The permission can be assigned directly to a user or it can be inherited through the hierarchy of groups (with the assigned permission of course) that the user belongs to. Permissions can also be assigned to a role which then passes it on to whichever user or group has that role. Yes, quite verbose but very powerful. The PermissionChecker is where all this heavy lifting occurs and where we actually determine whether a user “has permissions” to perform certain actions. A PermissionChecker is created or borrowed from a pool and placed in the thread local and themeDisplay object on every request.</span></span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">The implementation can be swapped out for your own class by extending <strong>com.liferay.portal.security.permission.PermissionCheckerImpl</strong> and overriding the necessary methods to implement your own functionality. Remember to specify your class name in <strong>portal.properties</strong> for the property <em>permissions.checker</em>.</span></span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">Now let’s look at an example of how the PermissionChecker is used in a simple case where we want to add a new page to a community layout set. We start this explanation from within the Communities Portlet lifecycle.  We’re adding a new layout to the layout set of a Community group so a process action request gets served by EditPagesAction which is just a struts action class. The first thing that happens is a check permissions call which uses the PermissionChecker to determine whether the user has the rights to perform the action MANAGE_LAYOUTS on targeted layout set of the community group. You will see permission checks like this all over Liferay’s view and service layer classes whenever we try to perform an action on a portal object. An example of what this check might look like:</span></span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><em><span style="line-height:115%;">GroupPermissionUtil.contains(permissionChecker,group.getGroupId(), ActionKeys.MANAGE_LAYOUTS)</span></em></span><em></em></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">As mentioned earlier, a user can inherit a permission from a hierarchy of groups that the user belongs to or a role that is directly or indirectly associated with the user. This hierarchical complexity is handled by a class within the PermissionChecker called the PermissionCheckerBag. So what’s in the bag? On first call to perform an action the bag is actually empty (null to be technically correct). Based off the user id we grab all the Organizations and UserGroups that the user belongs to along with the corresponding Groups since all these “containers” are also represented as Groups. We also obtain and throw in the roles as well. You can think of the PermissionCheckerBag as a container for all the user’s Group and Role associations per community and also contains helper (permission shortcut) methods that determine whether a user is a community owner or admin. This object is stored for the remainder of the request and discarded when the PermissionChecker is returned to the pool. (For performance reasons we should cache this object for the entire user session. This issue is now </span></span><span style="font-size:larger;"><span style="line-height:115%;"><a href="http://support.liferay.com/browse/LEP-6273"><span style="font-size:medium;">http://support.liferay.com/browse/LEP-6273</span></a></span></span><span style="font-size:medium;"><span style="line-height:115%;">). This class can also be extended as the implementation class <strong>com.liferay.portal.security.permission.PermissionCheckerBagImpl</strong> is only used in PermissionChecker.</span></span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">Now that we have the PermissionCheckerBag inside the PermissionChecker we are ready for the next step of the process, checking the bag's groups and roles for the permission to perform the action MANAGE_LAYOUTS. As with all service calls in Liferay this one begins with a *ServiceUtil helper class, in this case PermissionServiceUtil which is used to obtain the proper service via Spring. This service class can be easily swapped out in <strong>portal-spring.xml</strong> if so desired. The utility uses PermissionServiceFactory to get the PermissionService bean and its default implementation <strong>com.liferay.portal.service.impl.PermissionServiceImpl</strong> or a class that you implement yourself. In our example for adding a layout to the community layout set we first need <span style="color:black;">to start by getting a list of resources scoped for Individual, Group, Group Template and Company through another service helper ResourceLocalServiceUtil (lets leave this service alone unless you are planning to offload resource management to another datastore). Resources identify the target object that you are trying to “</span>MANAGE_LAYOUTS” on<span style="color:black;">. Now with this list of resources and the PermissionCheckerBag we can do a check for the permissions we are looking for. The actual call looks like this:</span></span></span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><em><span style="line-height:115%;">PermissionLocalServiceUtil.hasUserPermissions(user.getUserId(), groupId, actionId, resourceIds, bag)</span></em></span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">This PermissionService contains the bulk of the logic for Liferay permissions and brings together all the data gathered up to this point to perform the required queries. This call is made from the PermissionChecker and can also be customized to implement your own authorization logic if required. Again, just swap out the service implementation.</span></span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">Let’s look at some of the SQL calls used to figure out permissions for a user to add a layout. First we want to find all the Permissions for the action we are performing on the resource.</span></span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">SELECT {Permission_.*} FROM Permission_ WHERE (actionId = ?) AND (resourceId = ? OR resourceId = ? OR resourceId = ? OR resourceId = ?) </span></span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;"> </span></span></p>
<p class="MsoNormal"><span style="font-size:medium;"><span style="line-height:115%;">Once we have all the Permissions for the action and resource we want to check to see if any of the user associations either directly or inherently has the permission. We do this via the PermissionFinder which is helper class for performing custom SQL calls for permissions. </span></span><span style="font-size:medium;"><span style="line-height:115%;">The PermissionFinder performs a custom SQL based on the <em>permissions.user.check.algorithm</em> specified in <strong>portal.properties</strong> and returns true if the user has an association to the permission. Of course these SQL calls are made once before they are cached in the portal for subsequent requests.</span></span><span style="font-size:medium;"><span style="line-height:115%;"><br />
</span></span></p>
<p class="MsoNormal"><span style="font-size:medium;">So there you have it. </span><span style="font-size:medium;"><span style="line-height:115%;">PermissionChecker Explained. In case anyone was wondering.</span></span><span style="font-size:medium;"><br />
</span></p>
<p class="MsoNormal">
]]></content:encoded>
</item>
<item>
<title><![CDATA[No-Life (ray)]]></title>
<link>http://vbizet.wordpress.com/?p=74</link>
<pubDate>Tue, 10 Jun 2008 09:47:20 +0000</pubDate>
<dc:creator>Admin</dc:creator>
<guid>http://vbizet.wordpress.com/?p=74</guid>
<description><![CDATA[Etant Webmaster, je suis amené à utiliser les dernières technologies web pour réaliser des sites]]></description>
<content:encoded><![CDATA[<p>Etant Webmaster, je suis amené à utiliser les dernières technologies web pour réaliser des sites.<br />
En février 2008, je me suis penché sur un CMS qui commence à s'étoffer : Liferay.</p>
<p>Malgré des premiers réglages qui peuvent poser problème et une navigation parfois pertubante (onglets de couleurs différentes sans être sélectionnés), le résultat peut être assez bon, si l'on possède toutes les cartes : il faut tout de même installer quelques modules supplémentaires pour profiter pleinement de l'application.</p>
<p><!--more-->En effet, le réglage de certains "portlets" (les modules) sont inexistants : j'aurais, par exemple, bien aimer choisir quelle banque d'image afficher sur telle page ou ne pas avoir à ré-importer le document quand j'en change la description !</p>
<p>Même si les CMS ont la réputation d'avoir le juste minimum, Liferay compense par ses graphismes très 2.0.</p>
<table border="0" width="200">
<tbody>
<tr>
<td><a href="http://vbizet.wordpress.com/files/2008/06/life-annu.jpg"><img class="alignnone size-thumbnail wp-image-75" src="http://vbizet.wordpress.com/files/2008/06/life-annu.jpg?w=128" alt="" width="128" height="34" /></a></td>
<td><a href="http://vbizet.wordpress.com/files/2008/06/life-doc.jpg"><img class="alignnone size-thumbnail wp-image-78" src="http://vbizet.wordpress.com/files/2008/06/life-doc.jpg?w=128" alt="" width="128" height="55" /></a></td>
<td><a href="http://vbizet.wordpress.com/files/2008/06/life-calend.jpg"><img class="alignnone size-thumbnail wp-image-77" src="http://vbizet.wordpress.com/files/2008/06/life-calend.jpg?w=128" alt="" width="128" height="63" /></a></td>
</tr>
<tr>
<td><em>Un annuaire</em></td>
<td><em>Une base documentaire</em></td>
<td><em>Un calendrier</em></td>
</tr>
<tr>
<td><a href="http://vbizet.wordpress.com/files/2008/06/life-artic.jpg"><img class="alignnone size-thumbnail wp-image-76" src="http://vbizet.wordpress.com/files/2008/06/life-artic.jpg?w=128" alt="" width="128" height="65" /></a></td>
<td><a href="http://vbizet.wordpress.com/files/2008/06/life-img.jpg"><img class="alignnone size-thumbnail wp-image-79" src="http://vbizet.wordpress.com/files/2008/06/life-img.jpg?w=128" alt="" width="128" height="74" /></a></td>
</tr>
<tr>
<td><em>Gestion des articles (contenus des pages)</em></td>
<td><em>Une banque d'images (avec miniatures !) </em></td>
</tr>
</tbody>
</table>
<p>Liferay manque donc d'intuitivité et de fonctions mais reste prometteur.</p>
<p>Pour mieux vous en rendre compte, vous pouvez tester la <a href="http://demo.liferay.net" target="_blank">démo</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[New site]]></title>
<link>http://xume.wordpress.com/?p=5</link>
<pubDate>Tue, 20 May 2008 13:48:37 +0000</pubDate>
<dc:creator>xume</dc:creator>
<guid>http://xume.wordpress.com/?p=5</guid>
<description><![CDATA[Xume has a new site, build with liferay. Too bad the nested portlets are buggy&#8230; 
]]></description>
<content:encoded><![CDATA[<p>Xume has a new site, build with <a href="http://www.liferay.com">liferay</a>. Too bad the nested portlets are buggy... :-(</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[liferay theme]]></title>
<link>http://techzen.wordpress.com/?p=211</link>
<pubDate>Tue, 20 May 2008 10:04:53 +0000</pubDate>
<dc:creator>techzen</dc:creator>
<guid>http://techzen.wordpress.com/?p=211</guid>
<description><![CDATA[Compressing the css files takes place through a task in the plugin theme war manager build xml file
]]></description>
<content:encoded><![CDATA[<p>Compressing the css files takes place through a task in the plugin theme war manager build xml file</p>
<p>So first all css files are merged into one by the CSSBuilder and then compressed using the YUi-C.</p>
<p><a title="http://developer.yahoo.com/yui/compressor/" href="http://developer.yahoo.com/yui/compressor/" target="_blank">http://developer.yahoo.com/yui/compressor/</a></p>
<p>[sourcecode lang="xml"]</p>
<p><java<br />
classname="com.liferay.portal.tools.CSSBuilder"<br />
 classpathref="portal.classpath"<br />
<span class="code-lines"> </span> fork="true"<br />
<span class="code-lines"> </span> newenvironment="true"<br />
<span class="code-lines"> </span>><br />
<span class="code-lines"> </span> <arg line="docroot/css docroot/css/everything_unpacked.css" /><br />
<span class="code-lines"> </span></java><br />
<span class="code-lines"> </span><br />
<java<br />
 classname="com.yahoo.platform.yui.compressor.YUICompressor"<br />
 classpathref="lib.classpath"<br />
 fork="true"<br />
<span class="code-lines"> </span> newenvironment="true"<br />
<span class="code-lines"> </span>><br />
 <arg line="--type css -o docroot/css/everything_packed.css docroot/css/everything_unpacked.css" /><br />
<span class="code-lines"> </span></java></p>
<p>[/sourcecode]</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Sanoma Magazines keskittää digiosaamistaan]]></title>
<link>http://vierityspalkki.wordpress.com/?p=348</link>
<pubDate>Thu, 15 May 2008 08:27:58 +0000</pubDate>
<dc:creator>PerttuT</dc:creator>
<guid>http://vierityspalkki.wordpress.com/?p=348</guid>
<description><![CDATA[Uusi Digital Media -yksikkö tulee keskittymään tärkeimpien Sanoma Magazinesin verkkopalveluiden ]]></description>
<content:encoded><![CDATA[<p>Uusi Digital Media -yksikkö tulee keskittymään tärkeimpien Sanoma Magazinesin verkkopalveluiden kehittämiseen. Uusia palveluita onkin juuri alkuvuodesta julkaistu useita. Isojen uudistusten kohteina ovat olleet ensimmäisinä Akuankka.fi, Perhe.fi ja Vauva.fi. (Lähteenä <a href="http://www.marmai.fi/uutiset/article107233.ece">Markkinointi&#38;Mainonta</a>)</p>
<p>Uuden yksikön johtaja Tuija Wickström kommentoi uuden yksikön painopistettä:</p>
<blockquote><p>Valtaosa liikevaihdosta ja tuotoista verkossa syntyy mainonnasta, minkä    takia panostamme uusiin mainonnan ratkaisuihin sekä verkkomediamyyntimme    kehittämiseen. Sen lisäksi olemme aloittamassa yhteistyötä Sanoma Digitalin    Verkkomediamyynnin kanssa.</p></blockquote>
<p>Uudet <a href="http://www.akuankka.fi">Akuankka.fi</a>, <a href="http://www.perhe.fi">Perhe.fi</a> ja <a href="http://www.vauva.fi">Vauva.fi</a> nojaavat paljolti yhteisöllisyyteen ja käyttäjäkeskusteluihin. Jonkin verran palveluissa on myös blogeja ja lehtien nettijatkoja. Vauva.fi ja Perhe.fi vaikuttavat konsepteiltaan kovin samantyyppisiltä. Akuankka.fi on sitten selkeästi nuoremmalle väelle suunnattu "tarinamaisempi" verkkopalvelu jossa myös erilaisilla peleillä ja kilpailuilla on tärkeä rooli.</p>
<p><a href="http://vierityspalkki.wordpress.com/2007/12/01/sanoma-magazines-panostaa-verkkoliiketoimintaan/">Aikaisemminhan </a>on jo ollut tiedossa, että Sanoma Magazines suuntaa vahvasti verkkoon ja nämä ensimmäiset palvelut ovat vasta alkua laajemmassa uudistusten sarjassa. Samalla Sanoma Magazinesilla on tavoitteena siirtyä käyttämään laajamittaisesti mm. <a href="http://www.liferay.com">LifeRay</a>-portaalialustaa verkkopalveluidensa alustajärjestelmänä. LifeRay-alusta on jo <a href="http://www.virallisetlinkit.eu/site/16555.html">aikaisemmin valittu</a> Sanomien uusien palveluiden yhdeksi alustaratkaisuksi. Suomessa LifeRay:ta tarjoaa jo varsin laaja toimittajajoukko, mm. <a href="http://www.logica.fi">Logica </a>ja <a href="http://www.sanomadata.fi">SanomaData</a>. SanomaData on myös <a href="http://www.sanomadata.fi/tiedotteet/fi_FI/1207036805712/">hiljattain vahvistanut oman Internet-yksikkönsä teknologiaosastoa</a> ja palveleekin laajasti SanomaWSOY:n eri yksiköitä, myös LifeRayn osalta.</p>
<p>Uudistunut Akuankka.fi on kevään aikana päässyt TNS Metrixin mukaan jopa 50 000 viikkokävijän lukuihin, mutta on sieltä tullut hiljakseen alaspäin noin 13-20 000 viikkokävijän määriin. Korkea piikki selittynee paljolti aggressiivisella alkuvuoden mainoskampanjalla.</p>
<p><a href="http://www.akuankka.fi"><img class="alignnone size-full wp-image-349" src="http://vierityspalkki.wordpress.com/files/2008/05/akuankka-fi.jpg" alt="Aku Ankka, etusivu" width="500" height="362" /></a></p>
<p>Vauva.fi on sitävastoin takonut tasaisen tappavasti reilua 40 000 viikkokävijäänsä jo viime vuoden puolelta lähtien. Itse asiassa luvuissa on heilahtelua suorastaan hämmentävän vähän.</p>
<p><a href="http://www.vauva.fi"><img class="alignnone size-full wp-image-350" src="http://vierityspalkki.wordpress.com/files/2008/05/vauva-fi.jpg" alt="Vauva, etusivu" width="500" height="329" /></a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[KQV.de Produktiv mit Liferay]]></title>
<link>http://code4j.wordpress.com/?p=29</link>
<pubDate>Thu, 01 May 2008 08:35:16 +0000</pubDate>
<dc:creator>xandrox</dc:creator>
<guid>http://code4j.wordpress.com/?p=29</guid>
<description><![CDATA[Seit 29.04. sind wir Online. Und wie bei jedem Systemwechsel gabs auch hier das eine oder andere Pro]]></description>
<content:encoded><![CDATA[<p>Seit 29.04. sind wir Online. Und wie bei jedem Systemwechsel gabs auch hier das eine oder andere Problem. So musste ich feststellen das Liferay in 4.2.2 den Browsercache für alle Resourcen deaktiviert.<br />
In einem LAN macht sich sowas natürlich nicht bemerkbar. Die Performance ist jedoch sehr gut. Dabei musste sich Liferay gegen einen Apache Webserver behaupten. Speicherverbrauch des Servers natürlich erheblich höher als ohne Portal, jedoch bisher stabil. Unangenehm ist derzeit auch dass ein Hot-Redeploy des Portals auch nach einigen Eingriffen nicht möglich ist.</p>
<p>Das neue LP 5.0.1 ist draußen und da hat sich einiges getan. Stichwort AJAX, Icefaces Support usw.<br />
Somit werden wir bald wieder ein Upgrade anstreben.  Das wird kein Spaß... oder doch?</p>
<p><a href="http://www.kqv.de">www.kqv.de</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[The Ultimate Development Community (The How-To Idea)]]></title>
<link>http://innovationstartups.wordpress.com/?p=21</link>
<pubDate>Thu, 10 Apr 2008 06:42:56 +0000</pubDate>
<dc:creator>innovationstartups</dc:creator>
<guid>http://innovationstartups.wordpress.com/?p=21</guid>
<description><![CDATA[The Software development Battle field of .Net vs J2EE vs PHP vs Ruby on Rails and many more  From th]]></description>
<content:encoded><![CDATA[<p>The Software development Battle field of .Net vs J2EE vs PHP vs Ruby on Rails and many more  From the development perspective,  I would personally appreciate it if  I  google the web for only <strong>ONE </strong>technology that provides me with everything! Solution-Oriented and Business Domain Productivity, Ease of Learning new features and actually using my previous highly invested experiences using a certain framework or standard, a smart mature community rich in component tutorial,  <strong>Web Components Development P2P Sharing Standard </strong><em>(May be based on WebServices)</em> The idea is to develop a plugin- lets name it "DevPeers" - that enables the users of development frameworks such as JSF, Struts, etc; and IDEs such as Eclipse, Netbeans, etc; to have a decentralized repository that connects them all together in a natural way that adheres to their open source culture and loyalty to their communities (Java communities).  // If the solution architecture focuses on providing this functionality through developing an IDE plugin for Netbeans to enable P2P sharing by using existing messaging standards in the JCP, it will be Christmas for Sun's Netbeans Team.  The Java Community Process (JCP) is the only mature community that can support this type of innovation and introduce it to the community in  <strong>The Startup Business Model</strong> A Startup that invests in this idea, may later build its business model in certifying the P2P components and providing its own repository for its - low fee but wide range - subscribers and may also provide additional Third Party recommended components and consultancy services at great discounts; Hence, the Software Development Market for big companies such as Microsoft (Visual Studio.net), Sun (Netbeans), Borland  <strong>Abstract Vision and Predications </strong> The BEST in terms of community maturity and stake holder's visions will have the opportunity to evolve to be the Ultimate, and others will lagback for this Web X.0 era; I personally pet on that Java technologies will be win this P2P communities challenge. Microsoft will make GREAT investments to catchup with this smart open source community collaboration phenomena and will be forced to share source more and more of its toolbox to regain an innovation edge in its proprietary markets;  <strong>Java Community Process Proposal (Draft) </strong> Overview (Ultimate Developer Community)  A Standard for Java Developers Community for sharing open source Java technology Components, by leveraging the true power of the community of sharing their  expertise   and overcoming threats of new development paradigms such as Ruby on Rails that competes on the basis of productivity and easiness of development; hence through this standard the community will boost their development productivity through make-sense collaboration that fits to the nature of the open source Java technologies.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Liferay Portal 4.3 Installation- Part 2]]></title>
<link>http://innovationstartups.wordpress.com/?p=8</link>
<pubDate>Thu, 03 Apr 2008 20:47:35 +0000</pubDate>
<dc:creator>innovationstartups</dc:creator>
<guid>http://innovationstartups.wordpress.com/?p=8</guid>
<description><![CDATA[Detailed Installation Procedure for liferay for Netbeans developers:
-  the installation of liferay ]]></description>
<content:encoded><![CDATA[<p>Detailed Installation Procedure for liferay for Netbeans developers:</p>
<p>-  the installation of liferay portal using its WAR distribution. this allows system administrators to deploy  in existing  application server installation.</p>
<p>// its recommended to have a good understanding of the deployment procedure of Java EE applications in the application server of choice.</p>
<ol>
<li>Download and install netbeans and glassfish: Download and install netbeans-6.0.1-ml-linux.sh then Go to /user/local/glassfish-v2ur1/bin and execute ./asadmin start-domain domain1</li>
<li>Download and install JDK5</li>
<li>Download and install MySQL</li>
<li>Download liferay WAR file</li>
<li>Create a database for liferay. i.e: create database lportal character set utf8; liferay will automatically create tables and populate it the first time it starts.</li>
<li></li>
</ol>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Liferay Portal Development: Plugins SDK Approach (Part 1)]]></title>
<link>http://innovationstartups.wordpress.com/?p=11</link>
<pubDate>Thu, 27 Mar 2008 04:06:15 +0000</pubDate>
<dc:creator>innovationstartups</dc:creator>
<guid>http://innovationstartups.wordpress.com/?p=11</guid>
<description><![CDATA[

After you read the highlights at above presentation, read the blog and leave your related comments]]></description>
<content:encoded><![CDATA[<div class="snap_preview">[slideshare id=323432&#38;doc=liferay-portal-development-part-1-1206588766857466-4&#38;w=425]</div>
<div class="snap_preview"></div>
<div class="snap_preview">After you read the highlights at above presentation, read the blog and leave your related comments!</div>
<div class="snap_preview"><!--more--></div>
<div class="snap_preview"></div>
<div class="snap_preview"></div>
<div class="snap_preview">According to its official documentation, Plugins (portlets and themes) are now the preferred way to add functionality to liferay, as they have several benefits over using the extension environment, mainly for 3 reasons:</div>
<div class="snap_preview">
<ul></ul>
<ol>
<li>Plugins can be composed of multiple smaller portlets and theme projects. hence, ease of development.</li>
<li>Plugins are completely separate from the liferay core. Portlet plugins written according to the JSR-168 standard are deployable on any <a href="http://www.answers.com/topic/portlet?nafid=22" class="answerlink">portlet</a> container.</li>
<li>Plugins can be hot deployed (i.e., deployed while the server is running) providing immediate availability and zero server downtime deployments.</li>
</ol>
<ul></ul>
<p>As <a href="http://www.answers.com/topic/liferay-inc?nafid=22" class="answerlink">Liferay</a> makes every effort to remain tool agnostic, they provide a “Plugins Software Development Kit (SDK) which may be used to create both the portlet and theme plugins. this <a href="http://www.answers.com/topic/sdk?nafid=22" class="answerlink">SDK</a> may be used with any text editor or <a href="http://www.answers.com/topic/integrated-development-environment?nafid=22" class="answerlink">IDE</a> to create plugins for Liferay.</p>
<p><i>note: though its not necessary to use this SDK to create plugins, it is the recommended method</i></div>
<p>What is a Portlet?</p>
<p>Portlets are small web applications that run into a portion of a web page.</p>
<p>The heart of any portal implementation is its portlets, becuase portlets are where the functionality of any portal resides.</p>
<p>Liferay's core is a portlet container, and this container is only responsible for aggregating the set of portlets that are to appear on any particular page. Meaning that all feautres and the functionality of your portal application must be in its portlets.</p>
<p>Portlet applications, like servlet applications, have become a java standard which various portal server vendors have implemented.</p>
<p>The JSR-168 standard defines the portal specification.</p>
<p>A JSR-168 standard portlet should be deployable on any JSR-168 portlet container.</p>
<p>The portal server handles certain "givens" that apply to servlet-based projects, such as control over URLs or access to the HttpServletRequest object.</p>
<p>Portal Applications come generally into two flavors:</p>
<p>1) Portlets can be written to provide small amounts of functionality and then aggregated by the portal server into a larger application</p>
<p>or</p>
<p>2) Whole applications can be written to reside in only one or few portlet windows.</p>
<p>What is a Theme?</p>
<p>Themes are hot deployable plugins which can completely transform the look and feel of the portal.</p>
<p>Theme creators can make themes to provide an interface that is unique to the site that the portal will serve. As themes make it possible to change the user interface so completely that it would be difficult or impossible to tell that the site is running on liferay.</p>
<p>Theme developer is able to modify everything from the border around a portlet window to every object on the page, because all of the objects are easy to find.</p>
<p>Additionally, theme developers don't have to customize every aspect of their themes, as when the SDK is used, themes become only a list of differences from the default theme. this allows themes to be smaller and less cluttered with extraneous data that already exists in the default theme (such as graphics for emotions for the message boards portlet).</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Structure - Liferay]]></title>
<link>http://techzen.wordpress.com/2008/03/17/structure-liferay/</link>
<pubDate>Mon, 17 Mar 2008 06:13:00 +0000</pubDate>
<dc:creator>techzen</dc:creator>
<guid>http://techzen.wordpress.com/2008/03/17/structure-liferay/</guid>
<description><![CDATA[All of the finder methods have the interface defined
Intf_01
Util_o1 &#8211;&gt; This has refc to In]]></description>
<content:encoded><![CDATA[<p><span style="font-size:85%;font-family:trebuchet ms;">All of the finder methods have the interface defined</span></p>
<p>Intf_01</p>
<p>Util_o1 --&#62; This has refc to Intf_01 which is plugged in by Spring</p>
<p>Impl_01 -&#62; this implements Intf_01</p>
<p>Classes call Util static which calls one instance of Impl to return data.</p>
<p>All Util's and Intefcs are in portlet-service package<br />
All Impl's are in portal-impl package.</p>
<p>Then what about portlet-kernel?.<br />
This keeps interfaces for ?--- being accessed by external deployments in the container</p>
<p>In portal-impl you have custom-sql -&#62;Default.xml that keeps reference to all the xml files having custom sql's.</p>
<p>Reason is that not all classes are allowed to open Hibernate session - you need to check the Hibernate settings for the given classes in the file portal-spring.xml</p>
<p>And then enable PermissionCheckerImpl to access the hibernate sessions.<br />
For now - trying with JournalArticleFinderUtil and its Impl.</p>
<p>Nopes, the thread itself does not have access!! Amazing - now what to do??<br />
I think now I would need to go and check the settings of the class wrt hibernate..</p>
<p>There is some issue of accessing the hibernate apis from the Business layer and not the Action layer</p>
<p>The action layer is with all the Util's class and intfc<br />
And Business Layer is with Local,Remote etc interfaces and implementations.</p>
<p>So now I am trying to access the api using JournalArticleLocalService.getfinder().myMethod();</p>
<p>Nopes Hibernate did notwork for me - I need to understand the Service Builder method in Liferay<br />
Used JNDI instead.</p>
<p>Critical JIKES compiler can sometimes be unforgiving about exceptions in throws clause and does not compile correctly. For this used modern compiler instead - this took around 3 hrs to know. Tough one.<br />
##Set the following to true to track user clicks in memory for the<br />
#duration # of a user's session. Setting this to true allows you to view all<br />
#live # sessions in the Admin portlet.<br />
#<br />
session.tracker.memory.enabled=true<br />
#<br />
session.tracker.persistence.enabled=false</p>
<p><strong>to clear wrong preferences:</strong><br />
SELECT * FROM portletpreferences where preferences like '%LDAP%';</p>
<p>delete from portletpreferences where preferences like '%LDAP%';</p>
<p>delete from portletpreferences where preferences like '%CAS%';</p>
<p>servlet.service.events.pre.error.page=/common/error.jsp should be enabled by default to allow for more graceful handling of exceptions that are thrown in ServicePreAction</p>
<p>Using Trove unix fast for - performance - collections</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[simple ajax in jsp pages]]></title>
<link>http://ziganka.wordpress.com/?p=6</link>
<pubDate>Mon, 10 Mar 2008 13:14:58 +0000</pubDate>
<dc:creator>ziganka</dc:creator>
<guid>http://ziganka.wordpress.com/?p=6</guid>
<description><![CDATA[A simple way to add ajax in your existing application is to try AjaxAnywhere. With AjaxAnywhere you ]]></description>
<content:encoded><![CDATA[<p>A simple way to add ajax in your existing application is to try <a href="http://ajaxanywhere.sourceforge.net/" target="_blank">AjaxAnywhere</a>. With AjaxAnywhere you can <b>reload any part / zone of your web page</b>. The steps to install it are:</p>
<ul>
<li>download the library</li>
<li>make the modifications to the web.xml. You have to install the filter AjaxAnywhere and the appropriate filter mapping. Below is the code:<code>&#60;filter&#62;<br />
&#60;filter-name&#62;AjaxAnywhere&#60;/filter-name&#62;<br />
&#60;filter-class&#62;org.ajaxanywhere.AAFilter&#60;/filter-class&#62;<br />
&#60;init-param&#62;<br />
&#60;param-name&#62;preSendHandlerClass&#60;/param-name&#62;<br />
&#60;param-value&#62;org.ajaxanywhere.jsf.MyFacesClientStateSavingPreSendHandler&#60;/param-value&#62;<br />
&#60;/init-param&#62;<br />
&#60;/filter&#62;&#60;filter-mapping&#62;<br />
&#60;filter-name&#62;AjaxAnywhere&#60;/filter-name&#62;<br />
&#60;url-pattern&#62;*.jsp&#60;/url-pattern&#62;<br />
&#60;/filter-mapping&#62;</code></li>
</ul>
<p>A great example of using AjaxAnywhere is the displaytag library.  Below is the sample code of this:</p>
<p><code><br />
&#60;aa:zone name="userTable"&#62;<br />
&#60;display:table name="pageScope.service.allCars" id="userList" class="displaytag" pagesize="10"<br />
defaultsort="1" defaultorder="descending" export="true" requestURI="/ext/reports/view_reports"&#62;<br />
&#60;display:column property="make" title="Make" sortable="true" headerClass="sortable" /&#62;<br />
&#60;display:column property="model" title="Model" sortable="true" headerClass="sortable" /&#62;<br />
&#60;/display:table&#62;<br />
&#60;/aa:zone&#62;</code></p>
<p>The work is done from the following script:</p>
<p><code>ajaxAnywhere.getZonesToReaload = function() { return "userTable" }<br />
ajaxAnywhere.onAfterResponseProcessing = function() { replaceLinks() }<br />
function replaceLinks() {<br />
// replace all the links in  with onclick's that call AjaxAnywhere<br />
var sortLinks = $('userList').getElementsByTagName('thead')[0]<br />
.getElementsByTagName('a');<br />
ajaxifyLinks(sortLinks);<br />
if (document.getElementsByClassName('pagelinks').length &#62; 0) {<br />
var pagelinks = document.getElementsByClassName('pagelinks')[0]<br />
.getElementsByTagName('a');<br />
ajaxifyLinks(pagelinks);<br />
}<br />
}<br />
function ajaxifyLinks(links) {<br />
for (i=0; i &#60; links.length; i++) {<br />
links[i].onclick = function() {<br />
ajaxAnywhere.getAJAX(this.href);<br />
return false;<br />
}<br />
}<br />
}<br />
replaceLinks();</code></p>
<p>The above code is also applicable in JSR-168 portals, like Liferay.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Liferay Portal 4.3 Installation]]></title>
<link>http://innovationstartups.wordpress.com/?p=7</link>
<pubDate>Sun, 09 Mar 2008 16:54:13 +0000</pubDate>
<dc:creator>innovationstartups</dc:creator>
<guid>http://innovationstartups.wordpress.com/?p=7</guid>
<description><![CDATA[Liferay Portal Installation options can be categorized into 3 main types:

 Using an open source bun]]></description>
<content:encoded><![CDATA[<p>Liferay Portal Installation options can be categorized into 3 main types:</p>
<ul>
<li> Using an open source bundle: &#60;The Easiest and Fastest Method&#62; includes an embedded database.
<ol>
<li>Install Java SE runtime environment</li>
<li>Unzip the bundle</li>
<li>Run liferay</li>
</ol>
<p>Its recommended for people that want to review liferay's functionality ASAP!</li>
<li>Detailed installation procedure: install liferay to an existing application server (i.e glassfish, tomcat, etc) recommended for production environments.</li>
<li>Using the ext. environment:  provide a full  development environment to extend the functionality provided by liferay. Recommended for developers to use on their laptops, for doing the customization work.</li>
</ul>
<p>Note: liferay portal version 4.4 edition is called Liferay Enterprise Portal, and it supports servlet containers and full application servers. this edition doesn't use EJB's internally but does fully support them for custom portlets and applications.</p>
<p style="font-style:italic;">Bundle Installation for Solaris:</p>
<p style="font-style:italic;">java -jar -Xmx300m liferay-portal-glassfish-sunos-4.4.0.jar</p>
<p style="font-style:italic;">then go into the glassfish dir</p>
<p style="font-style:italic;">ant -f setup.xml</p>
<p style="font-style:italic;">Then startup glassfish as usual.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Desarrollo de Portlets – Clase 1]]></title>
<link>http://apiconz.wordpress.com/2008/02/29/desarrollo-de-portlets-%e2%80%93-clase-1/</link>
<pubDate>Fri, 29 Feb 2008 16:46:26 +0000</pubDate>
<dc:creator>apiconz</dc:creator>
<guid>http://apiconz.wordpress.com/2008/02/29/desarrollo-de-portlets-%e2%80%93-clase-1/</guid>
<description><![CDATA[Y como lo prometido es deuda, empezaré a postear las anotaciones del curso que llevé en la consult]]></description>
<content:encoded><![CDATA[<p class="MsoNormal" style="text-align:justify;"><span style="font-size:10pt;font-family:Verdana;">Y como lo prometido es deuda, empezaré a postear las anotaciones del curso que llevé en la consultora en la que trabajo. Antes de empezar, quiero agradecer a Kenneth por las excelentes clases que nos brindó. Debo reconocer que al principio el tema me intimidó un poco, sin embargo, poco a poco le fui agarrando la onda al tema. Sinceramente, cada día me voy convenciendo de la importancia que tiene el poder contar con una base teórica para entender mejor lo que uno va programando. Sin más ni más, mis primeros apuntes de la clase. </span></p>
<p class="MsoNormal" style="text-align:justify;"><span style="font-size:10pt;font-family:Verdana;">Bueno, primero lo primero… para entender lo que es un portlet, hay que hablar de “portal”. <b>¿Qué es un <a href="http://es.wikipedia.org/wiki/Portal_%28Internet%29" target="_blank">portal</a>?</b> Un portal es un sitio en el que puedes poner a disposición del usuario o los usuarios una serie de información, recursos y servicios que pueden venir de fuentes distintas. Un portal puede estar conformado por varios portlets. <b>¿Y qué es un <a href="http://es.wikipedia.org/wiki/Portlet" target="_blank">portlet</a>?</b> Una respuesta sencilla podría ser “una porción de código”. Sin embargo, según <i>Java Portlet Specification</i>, <i>“un portlet es un componente web basado en tecnología Java, administrado por un portlet container</i><i>, que procesa peticiones y genera contenido dinámico. Los portlets son empleados por los portales como componentes de interfaz de usuario que proveen una capa de presentación a los Sistemas de Información”</i>.</span></p>
<p class="MsoNormal" style="text-align:justify;"><span style="font-size:10pt;font-family:Verdana;">El responsable de manejar el ciclo de vida del portlet es el <i>portlet container</i>. Mientras, que el responsable de la agregación del contenido generado a la página es el portal.</span></p>
<p>Es muy importante tener en cuenta que los portlets al proveer una capa de presentación no deberían contener lógica de negocio. Por lo tanto, sería indicado que hagamos que ellos consuman <i>web services</i>.</p>
<p>Para el curso empleamos <a href="http://www.liferay.com/web/guest/home" target="_blank">Liferay</a> 4.2.2 con Tomcat 5.5 para JDK 5.0 y <a href="http://www.eclipse.org/" target="_blank">Eclipse Europa</a>. En los siguientes post, seguiré  subiendo mis notas de las siguientes clases.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/java" class="performancingtags" rel="tag">java</a>, <a href="http://technorati.com/tag/programacion" class="performancingtags" rel="tag">programacion</a>, <a href="http://technorati.com/tag/portal" class="performancingtags" rel="tag">portal</a>, <a href="http://technorati.com/tag/portlet" class="performancingtags" rel="tag">portlet</a>, <a href="http://technorati.com/tag/liferay" class="performancingtags" rel="tag">liferay</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprise 2.0: cool open source tools]]></title>
<link>http://indie2zero.wordpress.com/?p=108</link>
<pubDate>Mon, 18 Feb 2008 03:18:30 +0000</pubDate>
<dc:creator>Dan Carew</dc:creator>
<guid>http://indie2zero.wordpress.com/?p=108</guid>
<description><![CDATA[Enterprise 2.0 means the application of Web 2.0 tools in larger businesses. While smaller businesses]]></description>
<content:encoded><![CDATA[<p><a href="http://indie2zero.wordpress.com/files/2008/02/enterprise20-30percent.jpg" title="enterprise20-30percent.jpg"><img src="http://indie2zero.wordpress.com/files/2008/02/enterprise20-30percent.jpg" alt="enterprise20-30percent.jpg" align="left" /></a>Enterprise 2.0 means the application of Web 2.0 tools in larger businesses. While <a href="http://indie2zero.com/2008/02/09/gartner-says-big-companies-much-more-interested-in-web-20-than-smes-wrong/">smaller businesses (SMEs) can use hosted ASP tools for business</a>, a la <a href="http://indie2zero.com/2008/02/12/new-multi-user-backpack-writeboard-good-easy-to-use-sme-wiki/">Backpack</a>, large enterprises need more robust,  secure and customized tools with fuller feature sets and customizability. There's a whole slew of tools in this rapidly expanding space, e.g.,</p>
<ul>
<li>Sharepoint (<a href="http://www.networkworld.com/news/2008/013008-forrester-predictions.html">predicted by Forrester to "steamroll" other enterprise Web 2.0 apps in 2008</a>)</li>
<li>A couple interesting ones a progressive CIO I met with the other day is implementing:
<ul>
<li><a href="http://www.attensa.com/">Attensa</a> (RSS feeds of activities in your business you care about)</li>
<li><a href="http://www.k2.com/">K2 blackpearl</a> which "gives users the tools to design, assemble, execute, monitor and optimize dynamic business applications"</li>
</ul>
</li>
</ul>
<p>But as a big fan of <a href="http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1http://www.amazon.com/Cathedral-Bazaar-Musings-Accidental-Revolutionary/dp/0596001088/ref=pd_bbs_sr_1?ie=UTF8&#38;s=books&#38;qid=1203050531&#38;sr=1-1">Eric Raymond</a>, I'm especially interested in open source Enterprise 2.0 tools, a couple interesting looking ones which I've come across in the last week:</p>
<ul>
<li><a href="http://www.liferay.com/web/guest/products/portal">Liferay Portal</a>, a a Java-based open source enterprise portal and content management system (CMS). <a href="http://www.infoq.com/news/2008/02/liferay-44">InfoQ has a post on on Liferay's latest release</a>.</li>
<li><a href="http://www.intalio.com/">Intalio</a> is a "business process mapping" (BPM) tool. And BPM is a very hot topic these days. Most BPM tools I have used (e.g., ARIS, for SAP) are not very useful because a)the diagrams produced from them tell very little to people untrained in the methodology (thus it's hard to get validation from business process owners themselves); b)the "to be" diagrams don't tie back very well to the software. Intalio aims to overcome this--<a href="http://www.intalio.com/products/components/">their methodology</a> is so different, <a href="http://www.intalio.com/products/benefits/">they call it "BPM 2.0"</a>.  They use BPEL4People, which seems very promising to me, and, in lay people's terms, what the business analyst designs as a "to be" business process, can then be quickly and easily built using Intalio's <a href="http://www.intalio.com/main/products/designer/">Designer</a>, <a href="http://www.intalio.com/main/products/server/">Server</a> and <a href="http://www.intalio.com/main/products/workflow/">Workflow</a> modules. The tools build are AJAXy, SOA-ish Web 2.0 tools--as is even the way of interacting with the tools apparently.</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Portals Out There]]></title>
<link>http://aximal.wordpress.com/2008/01/31/5/</link>
<pubDate>Thu, 31 Jan 2008 15:23:23 +0000</pubDate>
<dc:creator>aximal</dc:creator>
<guid>http://aximal.wordpress.com/2008/01/31/5/</guid>
<description><![CDATA[What portals are available out there?
Of course, BEA Weblogic, IBM WebSphere, Microsoft SharePoint a]]></description>
<content:encoded><![CDATA[<p>What portals are available out there?</p>
<p>Of course, BEA Weblogic, IBM WebSphere, Microsoft SharePoint are out there.</p>
<p>What else?</p>
<p>Links:</p>
<ul>
<li>
<div><a href="http://java-source.net/open-source/portals">http://java-source.net/open-source/portals</a></div>
</li>
<li>
<div><a href="http://www.manageability.org/blog/stuff/open_source_portal_servers_in_java">http://www.manageability.org/blog/stuff/open_source_portal_servers_in_java</a></div>
</li>
<li>
<div><a href="http://java-source.net/open-source/portals/ipoint-portal">http://java-source.net/open-source/portals/ipoint-portal</a></div>
</li>
<li>
<div><a href="http://www.rlhc.net:8080/lightPortal/index.jsp">http://www.rlhc.net:8080/lightPortal/index.jsp</a></div>
</li>
<li>
<div><a href="http://www.theserverside.com/news/thread.tss?thread_id=41211">http://www.theserverside.com/news/thread.tss?thread_id=41211</a></div>
</li>
<li>
<div><a href="http://www.birt-exchange.com/modules/products/index.php?productid=6">http://www.birt-exchange.com/modules/products/index.php?productid=6</a></div>
</li>
<li>
<div><a href="http://www.birt-exchange.com/modules/products/index.php?productid=10">http://www.birt-exchange.com/modules/products/index.php?productid=10</a></div>
</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Next Level : FreeDashboard Embeded into LifeRay]]></title>
<link>http://freeanalysis.wordpress.com/2008/01/17/next-level-freedashboard-embeded-into-liferay/</link>
<pubDate>Thu, 17 Jan 2008 16:31:33 +0000</pubDate>
<dc:creator>Patrick</dc:creator>
<guid>http://freeanalysis.wordpress.com/2008/01/17/next-level-freedashboard-embeded-into-liferay/</guid>
<description><![CDATA[Dear Readers,
We did it ! We have embeded a FreeDashboard document (both static and dynamic) into Li]]></description>
<content:encoded><![CDATA[<p>Dear Readers,</p>
<p>We did it ! We have embeded a FreeDashboard document (both static and dynamic) into Liferay ! And its running well.</p>
<p>We are now in  position to offer a Dashboard service that put together Pentaho xaction (basically reports and charts), FreeMetrics Alerts, FreeMetrics KPIs, FreeAnalysis Olap reports and any kind of label / picture / text into a consistent FreeDashboard document, with dynamic filter on top of it. This document can then be managed using Liferay document management services (PDF management, workflow of publication ...)</p>
<p>All in one, you can now take benefit of the top features of each platform and provide any kind of layout to publish your results, then design high quality content to be published against your Liferay portail. Just think of this : for those of you who know Liferay ease of use and powerfull features, having a BI system embeded into Liferay, especially a Dashboard Management System, is the best things that could have happen to both world : BI and portails.</p>
<p><a href="http://freeanalysis.wordpress.com/files/2008/01/freedashboard_embeded_liferay.jpg" title="FreeDashboard document embeded into Liferay"><img src="http://freeanalysis.wordpress.com/files/2008/01/freedashboard_embeded_liferay.thumbnail.jpg" alt="FreeDashboard document embeded into Liferay" /></a></p>
<p>Stay connected, this is just the beginning ...</p>
<p>Have Fun !</p>
<p>Patrick</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Measuring ECM Performance]]></title>
<link>http://wordofpie.wordpress.com/2008/01/14/measuring-ecm-performance/</link>
<pubDate>Tue, 15 Jan 2008 03:25:12 +0000</pubDate>
<dc:creator>Pie</dc:creator>
<guid>http://wordofpie.wordpress.com/2008/01/14/measuring-ecm-performance/</guid>
<description><![CDATA[I was reading a post by Lopataru on his blog.  For those that haven&#8217;t read his blog, Lopataru ]]></description>
<content:encoded><![CDATA[<p>I was reading a post by <a href="http://lopataru.wordpress.com/">Lopataru</a> on his blog.  For those that haven't read his blog, Lopataru is working on his PhD research, focusing on Content Management.  He is trying to determine what makes a Content Management system <i>high-performance</i>.  I'm not going to analyze <a href="http://lopataru.wordpress.com/2008/01/13/what-is-performance-for-content-management/">his thoughts</a>, but I am going to add some independent thought to the issue.</p>
<p><!--more--></p>
<h4>Supporting Components</h4>
<p>There are two components that act in a supporting role that should be taken out of the equation.  They are the database and the full-text index engine.  Why?  Those items shouldn't be provided by the content management vendor.  In most products, they aren't.  Exceptions include SharePoint and Oracle's Stellent.  However, as they are separate products and licensed independently, it doesn't count.</p>
<p>Of course there is technically the possibility of an exception.  A company could create their own database and/or indexing engine for their repository.  In that situation, you have to take it into account the database speed.  However, I doubt that that they could match those vendors that utilize 3rd party databases like SQL Server and Oracle, except maybe in price/performance equation.</p>
<p>There is a need to eliminate the variable performance that can be introduced by the databases.  There are two basic approaches:</p>
<ul>
<li>Use the recommended database vendor.  This had the benefit of using the database for which the system is <i>best</i> designed.</li>
<li>Average the results.  Using the same database for each one isn't fair as one may be optimized for Oracle while another may be optimized against SQL Server.  I would take the performance measured against each and average it out.  In theory, that will  give you a comparative measure between different systems.</li>
</ul>
<p>Index engines are trickier.  Most only support one so you have to use them.  Tests can't be designed to minimize the full-text search when judging performance.  That is one of the key features.  So I think one should try and separate the search capabilities into a separate set of tests to try and isolate the performance.  One day all index engines will be plug-and-play and we will be able to truly be able to measure the system.</p>
<h4>The User Interface</h4>
<p>Here is another problem.  Are we measuring the performance of an ECM platform or a suite?  If a suite, you need to test the standard User Interface.  If platforms, then try backing them onto a custom UI hosted on <a href="http://www.liferay.com/web/guest/home">Liferay</a> or some other common platform.</p>
<p>Some people can design most impressive engines, it is the web interface that they fall apart upon.</p>
<h4>So What is Left?</h4>
<p>Well, first, load it with content.  I'm thinking at least 100,000 different pieces of content.  Half stored throughout a layered, deep, hierarchy and half in a small number of folders.  Don't forget to add several pieces of metadata.  This will set things up for the tests.</p>
<p>What do you measure?  Well, several things:</p>
<ul>
<li>Move large folder hierarchies around.</li>
<li>Mass meta-data updates.</li>
<li>Process query result sets.</li>
<li>Anything else define in the system requirements (if a system does it, test it)</li>
</ul>
<p>When all is said and done, add at least 50% more content (or remove half of it) and repeat.  Performance can suffer as a repository grows, so it is important to test it large.  When doing this, be sure to size all the systems as recommended for the amount of content.  If a system tells you that it needs X and you give it X/2, of course it isn't going to work well.  If you through everything on the same size box, you are beginning to compare efficiency, not just performance.</p>
<h4>Remember Our Purpose</h4>
<p>Lopartu is designing a new system, so telling him how to compare existing systems doesn't help him much.  Contrary to the above indications, databases and index engines are critical in the design.  A poor database design can cripple a system.  Comparing two systems running on SQL 2005 will reveal those design flaws.</p>
<p>Performance also isn't everything.  If you can't protect content, track it, or manage it through its lifecycle, it doesn't matter how fast it is.  That is another consideration.  When designing a system for high-performance, it is critical to design it to handle all of the functionality that any target organization would need.  In addition, don't forget to design for all the feature that you don't know.</p>
<p>That is the real trick.  The older ECM platforms are burdened by <a href="http://kominetz.com/2007/11/20/the-elephant-and-the-blind-men/">legacy design concepts</a> that are either dated or that never panned-out.  The ease of upgrade from one version to another limits the ability to remove these design characteristics.  Alfresco has the benefit of not being limited by its own history.  However, if they are successful, they will be burdened by their own design when new ideas and features come forth.</p>
<p>Now, hit me with your best shot.  I know you want to do so.</p>
]]></content:encoded>
</item>

</channel>
</rss>
