RSS

Entries with Products Liferay Portal .

thumbnail
Vitaliy Koshelenko | 08 Feb 2022

Overview In this blog I'll explain how to implement a custom Headless API module, configure an OAuth2 authorization and consume the API.  We’ll implement the Headless API for “App manager” functionality with endpoints to get the list of apps, get app details, create/update/delete the app (“App” here is a model, describing some external application with the following...

20013
1
thumbnail
David H Nebinger | 07 Feb 2022

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)...

15063
3
thumbnail
David H Nebinger | 26 Jan 2022

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...

16104
4
thumbnail
David H Nebinger | 26 Jan 2022

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...

15715
0
thumbnail
Madhukar Kumar | 21 Jan 2022

What is two-way ssl communication? In two-ways ssl authentication, Client and server need to validate and authenticate each other's identities. This can be summarized with the picture below. How ever, I will be writing a separate post about SSL and two-way authentication later.         In this post we will talk about calling external API which is two way SSL...

11999
1
thumbnail
David H Nebinger | 23 Feb 2022

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...

18646
5
thumbnail
David H Nebinger | 12 Jan 2022

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...

16841
7
thumbnail
David H Nebinger | 11 Jan 2022

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...

12619
3
thumbnail
David H Nebinger | 10 Dec 2021

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...

29235
44
thumbnail
David H Nebinger | 10 Nov 2021

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...

12758
1
thumbnail
David H Nebinger | 18 Sep 2021

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...

12194
1
thumbnail
Vitaliy Koshelenko | 10 Sep 2021

Overview   Search is one of the fundamental Liferay features, which provides users with the possibility to quickly find the content they look for. It’s powerful, pretty much configurable, and flexible.  However, during implementation of the latest project for our client we run into a bunch of issues. Some of them were Liferay bugs or missing functionality, other ones - configuration...

14161
5
thumbnail
David H Nebinger | 27 Aug 2021

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...

12431
1
thumbnail
David H Nebinger | 24 Aug 2021

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...

12161
2
thumbnail
Fabian Bouché | 31 Aug 2021

With this first blog, I'd like to start a series about application integration. Quite often, I encounter projects where Liferay must integrate with some backend services. There are lots of integration patterns. Integration may happen at browser or server side. There are many development frameworks available (React, Vue, MVC Portlet, Liferay Faces, Spring MVC Portlet...) Communication with...

13694
0
thumbnail
David H Nebinger | 24 Aug 2021

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...

11170
3
thumbnail
David H Nebinger | 16 Aug 2021

A really quick post to share something important with you React + Clay developers out there... A recent update to Clay had a breaking internal change. If after deploying your React portlet and you try to place it on the page and you get errors in the JS console like: liferay-amd-loader | Errors returned from server for require( ["my-module@1.0.0"] ): "Missing dependency...

15648
3
thumbnail
David H Nebinger | 06 Aug 2021

Introduction A client asked me to build a React portlet for them and I was like, "Oh Yeah!" I mean, it's been a while since I built a React portlet and tooling has really changed a lot since then, so I was really looking forward to this new task. So without further ado, I'm just going to dive right in... Creating the Module Okay, so this is still Liferay and still OSGi, so we're going to be...

29088
3
thumbnail
David H Nebinger | 19 Jul 2021

Introduction So I was recently asked to help build a custom Liferay docker image for a client and there were some specific requirements such as: Should not contain hard-coded credentials, those will be available as environment variables. Should be a single image that can be used in every environment, DEV, UAT and PROD. Now these kinds of things can be challenging to do if you were to...

16111
0
thumbnail
David H Nebinger | 12 Jul 2021

Introduction Recently I asked some of my teammates for ideas about what to blog about next. Most of the time I take my inspiration from different clients I work with or questions that come up on the Liferay Community channels, but lately the well has seemed kind of dry. So I went fishing for suggestions. My friend Andrew Betts, who happens to be in the Liferay DXP Cloud (DXPC) team suggested...

15386
0