Blogs

RSS

Entries with Projects Platform .

RSS
thumbnail

Part-1 | What & Why & When Custom Liferay Framework Create your own Liferay Framework, Understand the possibilities to write your own Liferay framework for any complex custom developed solution which could evolve with time like any other Liferay Out Of The Box Feature. Custom Liferay Framework - What? Alright! This is where we set the context. What is a Framework? ...

1469
thumbnail

Part-2 | How to Custom Liferay Framework? Implement your own Custom Liferay Framework over a simple use case and understand the possibilities and capabilities that open up. Continuing on top of the perspectives and ideas discussed in Part 1 of the blog series, we will try to implement our own Custom Liferay Framework for a simple use case picked up from one of the Liferay OOTB...

1161
thumbnail

Liferay provides an option to configure password policy (refer), it provides an option to mention Password Expiry Time. Once the Password is expired then user will not be able to login to the system and when user tries to login, Liferay shows error message :   Error: Your password has expired. Please contact an administrator to reset your password. Admin needs to reset the user...

1711

Many UI teams prefer building Liferay DXP Theme using gulp instead of the Liferay Theme Builder. For example, cd themes/my-themenpm installgulp build However, Liferay has not documented ways to integrate the above to a Maven project pom.xml. Here is a sample solution: { "name": "my-theme", "version": "1.0.0", ...

1239
thumbnail

Introduction So my friend Thiago Moreira posted the following (slightly edited) message to our internal Slack: Hey, so I've built a module for 7.4 GA5, but when it is deployed to 7.4 GA16, I get a bunch of "unresolved requirement" exceptions and the module won't be available. Is there something I need to set so my module will work on both GA5 and...

3999
thumbnail

Just a quick one today... In previous versions of Liferay, if you were browsing a site as a guest but wanted to access a private page or a private site, Liferay would automagically show you the login form so you could authenticate before accessing the page or site. This has been changed in 7.4. It was determined that just by showing the login form, Liferay was leaking the fact that the page...

5607
thumbnail

Introduction Recently I was asked how to implement MDC and/or NDC in Liferay 7.4, and since I thought it might be interesting to a wider audience, I'm going to blog about it here. Background In a multithreaded, multiuser environment such as in a web application like Liferay, different threads in the container will be handling different requests, but likely each request is doing something...

6404
thumbnail

Introduction In November of 2018, I authored a blog, Boosting Search. In that blog, I showed how to boost search results for tag matches in an effort to provide some alternative to GSA's KeyMatch support. A lot has changed in Liferay since that blog was posted, and it turns out there are much easier ways now in DXP 7.4 that won't require any code at all... Results Ranking In discussing the...

6141
thumbnail

Introduction I've worked with clients that, for one reason or another, needed to change their database platform. This ask has increased with the move to DXPCloud and MySQL database. I'm not sure there's a well defined plan for how to migrate a Liferay database, so I thought I'd blog about it. Now, if you know anything about me, you know I'm a planner and I create (sometimes intricate)...

6422
thumbnail

Introduction I was recently polling my coworkers looking for new blog ideas, and Filipe Melo asked about Websockets. I haven't seen any other documentation or blogs about building Websocket solutions for Liferay, so I figured this would be an interesting challenge. Websockets was introduced to provide a full duplex and realtime client/server communication path between remote clients and your...

7786
thumbnail

Introduction My friend and coworker Eric Chin recently posed a question on our internal slack channels asking if anyone had experience with Liferay's Batch mode and he was not finding enough supporting documentation on it. Although I hadn't yet worked with Liferay Batch, I kind of took it as a challenge to not only give it a try, but more importantly to document it in a new blog post, so here...

6687
thumbnail

Hey, so a quick post today about how to set up JNDI connections in Liferay CE 7.4 or Liferay DXP 7.4. Liferay moved jars around in 7.4. No longer are there key jars in the Tomcat lib/ext directory (or for other application servers). To set up JNDI resources under 7.4, you'll need to put the necessary JDBC jars into the Tomcat lib directory (or the lib directory of your application server). In...

5637
thumbnail

Introduction So recently I completed a database upgrade from Liferay EE 6.1 up to Liferay DXP 7.4. It was actually pretty straightforward and I didn't encounter any significant blockers. I did however learn some stuff along the way and I thought I'd share those details here so you will be able to do your next Liferay DB upgrade in the same way. Note that although I'm specifically including...

5566
thumbnail

Introduction So I wrote https://liferay.dev/blogs/-/blogs/extending-liferay-osgi-modules five years ago targeting Liferay 7.0. A lot has changed since then. Liferay Gradle Workspace plugin has seen numerous updates. Gradle has seen an update or two as well. Recently when asked to assist a client who wanted to extend Liferay's Journal Article service, I started by recommending they look...

4435
thumbnail

Hey, all! There's a new zero-day vulnerability hitting the web right now, and it is affecting a lot of libraries and applications out there, including Liferay 7.4. Any app using Log4j2 is vulnerable. If you are using Log4j2 in your customizations or you are using Liferay 7.4 (which now uses Log4j2), this new vulnerability affects you. I'm not going to show anything about how to take advantage...

18882
thumbnail

Introduction In a recent blog I explained how to create a React-based portlet within your Liferay Gradle Workspace by using the js-widget Blade template which in turn uses the Yeoman Liferay JS Generator to create the project. (Wow, that was a mouthful ;-) ) In this way, you can have your Liferay Gradle Workspace take care of building your complete suite of Liferay modules, the...

5452
thumbnail

Introduction So when you start building your own fragments and using them on your content pages, you will often times run into an issue with propagation... So I like to create fragments for headers and footers and then use those fragments on every page that I build. But when I update those fragments, I have to go into the usages panel to do the propagation so they all get updated. If you...

7262
thumbnail

Introduction I posted two blog posts this week, and each of them had a particular drawback - lack of cluster coordination. The first blog post on cluster-enabled upgrade processes introduced using an @Reference dependency upon a specific Release version, the idea being that the component shouldn't start unless that version was available. When the upgrade process would run on the cluster...

6455
thumbnail

Just a quick one... I've just updated my Log Persister project for Liferay 7.3. You can find it under the 7.3 branch: https://github.com/dnebing/log-persist/tree/7.3 For those that aren't aware, I introduced the Log Persister here: https://liferay.dev/blogs/-/blogs/liferay-7-dxp-making-logging-changes-persistent Normally Liferay does not persist logging. If you make any changes in...

6559
thumbnail

I recently was helping a client with an upgrade process and that had run into a little problem... A few of the model hints were not updated on some of the columns in their Service Builder services and, as we all know, Service Builder will not ensure the columns are changed in a production environment (well, actually any environment where the schema.module.build.auto.upgrade property is not set...

5944