Migrating OSGi Plugins to standalone applications  

By Sven Hasselbach | 1/13/20 3:09 PM | Development - Notes / Domino | Added by Oliver Busse

I have created an example project for migrating an OSGI-based Spring Boot application into a standalone application (in the „Maven“ branch)

node node.js, domino-db & Docker (12): DominoDB and a big NO-NO?  

By Sven Hasselbach | 11/15/18 6:17 PM | - | Added by Oliver Busse

Disclaimer: This is a response on Heiko’s post about his security considerations with the domino-db module. It is good to have such a discussion, and hopefully this discussion will go on. This is my personal view on this topic. If you have another opinion, feel free to add a comment.

node.js, domino-db & Docker (5): memcached  

By Sven Hasselbach | 11/5/18 2:04 AM | - | Added by Oliver Busse

To use memcached in our Docker container, we have to modify the existing Dockerfile a little bit. First it is required to install memcached in the container itself, and then it is required to change the CMD command to start the service and our express application.

node.js, domino-db & Docker (4): Error Handling  

By Sven Hasselbach | 11/1/18 10:03 AM | - | Added by Oliver Busse

When we started our express application and accessed it in the browser, an error raised on the console and no response was sent back to the browser. The reason for this behaviour is that the database connection is not correctly configured, and the request from our application fails.

node.js, domino-db & Docker (3): Adding domino-db  

By Sven Hasselbach | 11/1/18 2:46 AM | - | Added by Oliver Busse

The express application is still the boilerplate created by express generator. Now let’s look into the existing code and use the domino-db package. First we have to understand express a little bit better. I won’t go deeply into details, because there are many tutorials available, and the documentation is really awesome.

node.js, domino-db & Docker (2): Dev Environment  

By Sven Hasselbach | 11/1/18 2:45 AM | - | Added by Oliver Busse

Before we can start to create a new app we first have to setup a development environment. While there are multiple IDE’s around, I have made most of my node.js development with Atom instead of an IDE like Eclipse or Visual Studio. Maybe this will change in the future, but for a better understanding, let’s start with Atom and do the required steps manually.

node.js, domino-db & Docker  

By Sven Hasselbach | 11/1/18 2:45 AM | - | Added by Oliver Busse

Here is an example to create a express application with the new domino-db npm module and run it in a docker container. Requirements are that node.js & Docker is installed. Everything is done in the command line and a text editor.

Dropping Domino’s HTTP task  

By Sven Hasselbach | 7/15/18 7:47 AM | - | Added by Oliver Busse

Instead of waiting for updates of the Domino HTTP task any longer I was thinking about how to use modern HTTP technologies on top of Domino. But instead of implementing it in the Domino stack, I think I found a new way for developing and running my Spring Boot applications: Why not using the existing JVM, and run my application directly on it?

HCL, Domino & node.js  

By Sven Hasselbach | 6/23/18 4:17 PM | - | Added by Oliver Busse

I am very happy to hear that HCL invests in Domino and improves the existing technology stack. But as a German, I have to be sceptical (it’s in our genes), because I can not see any advantage in the integration of node.js applications on top of Domino. I have written a demo two years ago, just to prove that it would be possible.

Domino & Spring Boot: ScheduledTasks  

By Sven Hasselbach | 5/2/18 7:55 AM | Infrastructure - Notes / Domino | Added by John Oldenburger

When developing Spring Boot applications running on Domino, there is a feature which runs out of the box and makes developers happy: ScheduledTasks. These are the equivalent for agents, but they are running directly in the HTTP task (which allows to access the complete Spring Application at runtime).

java.security.AccessControlException kills productivity  

By Sven Hasselbach | 4/9/18 1:34 PM | - | Added by Oliver Busse

Dear IBM, can you please remove the totally useless java policy restrictions? Especially for agents running on the server? I can’t imagine how much life time and customers money was spent during the last decades just to find a workaround for these limitations.

Quick-n-Dirty: Hotfix for DateTimeHelper  

By Sven Hasselbach | 6/12/17 12:02 PM | - | Added by John Oldenburger

This weekend I stumbled over a bug of the DateTimeHelper: If the value of the field is empty, no actions and/or action listeners connected with a managed bean will be executed anymore. Here is an example of a small XPage to illustrate the problem.

High Performance REST Applications (4) – Looking into OSGi   

By Sven Hasselbach | 5/4/17 5:57 AM | - | Added by Kenio Carvalho

Before going any deeper into the the servlet project, let’s have a look at the imported projects and talk about some OSGi basics.

High Performance REST Applications (3) – Importing the Starter Project  

By Sven Hasselbach | 4/24/17 7:43 AM | - | Added by Oliver Busse

Now you can import the projects required from Git. To get the URI, you have to open https://github.com/hasselbach/ and select the repository „ch.hasselba.concurrent„. Click the „Clone or download„-Button and copy the URI from the opening box.

High Performance REST Applications (2) – Dev Environment  

By Sven Hasselbach | 4/23/17 7:46 AM | - | Added by Oliver Busse

Before you can start developing a Servlet as an OSGi Plugins, you must set up a development environment first. To do this, download Eclipse IDE (Eclipse IDE for Java EE Developers) and XPages SDK from OpenNTF (The XPages SDK is a helper to create the JRE environment and the Target Platform).

High Performance REST Applications (1) – Intro  

By Sven Hasselbach | 4/21/17 5:10 AM | - | Added by John Oldenburger

This is a new serie about developing high performance REST applications on top of Domino. It will contain my presentations from SNoUG and EntwicklerCamp this year and describes all required steps to develop, build and deploy these servlets on a basic level. The code used in this serie is already available at GitHub.

Domin & REST: Debug your Plugin  

By Sven Hasselbach | 3/7/17 10:05 AM | - | Added by Oliver Busse

When developing OSGi Plugins, you should have your own development server running on your local machine. Not only because of the faster deployment of changes (a new version of a plugin must always deployed with a HTTP restart), but because of the Java debugging posibilities: Only one Eclipse instance can connect to the JVM, and every request processed by the server will start the debugger.

Domino & REST: Listeners for Initialization & Destroying of a Servlet  

By Sven Hasselbach | 2/27/17 4:47 AM | - | Added by Oliver Busse

If you need to know when your Servlet is initialized or destroyed, you can use a ServletContextListener in your application. First, create the class AppServletContextListener and implement the javax.servlet.ServletContextListener interface.

XPages & Domino JNA  

By Sven Hasselbach | 6/24/16 6:53 AM | - | Added by John Oldenburger

Karsten Lehmann has published a very promising project named „Domino JNA„, which allows access to the underlying IBM Domino/Notes C API from Java. If you want to use the project in a XPages, you have to add some Java permissions to the java.pol file on your server.

Vaadin In XPages: A UIComponent for embedding Vaadin applications  

By Sven Hasselbach | 5/3/16 7:25 AM | - | Added by John Oldenburger

I have created an UIComponent to embed Vaadin applications into XPages. It allows to run both technologies on the same site by adding it to your XPage.This little example shows the XPage above including the the Adressbook application.

Things I never blogged about: XPages & Google’s EventBus  

By Sven Hasselbach | 12/1/15 7:41 AM | - | Added by John Oldenburger

This is another topic I wanted to blog about for a long time: The use of Google’s EventBus in XPages applications. EventBus is a replacement for the Java in-process event distribution. It makes life a lot easier.

Things I never blogged about: The XPagesExecutor Service  

By Sven Hasselbach | 11/29/15 11:29 AM | - | Added by John Oldenburger

The XPages engine has its own executor service to run jobs concurrently in another thread: the XPagesExecutor service. Under the hood the service uses a ThreadPoolExecutor for executing tasks, so it allows to use Runnables or Callables/Futures for asynchronous computation.

Testing XPages (2): BrowserMob Proxy  

By Sven Hasselbach | 9/17/15 7:49 AM | - | Added by John Oldenburger

When testing XPages or other web applications, you may want to have more control about the requests and responses during the JUnit testing. For example, if you want to test if a specific HTTP header exists in the response, or if it is required to add some HTTP headers to the request.

Testing XPages  

By Sven Hasselbach | 9/16/15 3:10 AM | - | Added by John Oldenburger

When testing XPages with Selenium, you can easily pre-generate the JUnit test code with the browser plugin. But when you then change the structure of the XPage (f.e. by moving the components from an XPage to a custom control), all the IDs of the JUnit test will not work anymore.

XPages: A ClientSide State  

By Sven Hasselbach | 9/13/15 3:30 PM | - | Added by John Oldenburger

I have created a ClientSide State for XPages, which allows horizontal scaling of XPages applications with a single click. After installing the OSGi Plugin on the servers and the DDE, you can activate it with a single click. Then, the State of the XPages application is stored on client side.

The XPages EL Directory  

By Sven Hasselbach | 7/8/15 6:58 AM | - | Added by John Oldenburger

The XPages EL Directory. I am currently working on an overview of available objects and properties for XPages Expression Language. A first incomplete and horrible designed version can be found here (http://hasselba.ch/el-wiki/EL.nsf/).

XPages: SSJS, EL and Bindings  

By Sven Hasselbach | 7/2/15 2:15 AM | - | Added by Oliver Busse

Because of reasons you should already know I avoid the use of SSJS in my XPages applications, but there are still some parts which can be easy realized in SSJS, but with EL only with a lot of effort. One of this things is accessing properties of a component which has only a getter or a setter – this will not work when using a binding.

XPages: An optimized JavaScript Resource Renderer  

By Sven Hasselbach | 6/21/15 4:33 AM | - | Added by John Oldenburger

Ferry Kranenburg created a nice hack to solve the AMD loader problem with XPages and Dojo, and because of the missing ability to add a resource to the bottom of an XPage by a property, I have created a new JavaScriptRenderer which allows to control where a CSJS script will be rendered.

XPages: Running Google’s Chrome V8 Javascript Engine (2)  

By Sven Hasselbach | 4/10/15 11:32 AM | - | Added by Johnny Oldenburger

A while ago I tried to run Google’s V8 Javascript engine on top of XPages, and today I found the reason why my server crashed after the first click: I have tried to load the engine only once (statically), and that killed Domino completly. Today I moved the code back into the processAction method, and now it works without problems.

XPages: Empty HTML5 Attibutes & PassThroughTags  

By Sven Hasselbach | 3/10/15 5:13 PM | - | Added by Johnny Oldenburger

A while ago I developed some HTML5 XPages applications, but the development process was a little bit frustrating because of the missing possibility to add empty attributes to a PassThroughTag. A single empty attribute is not allowed, because this would result in invalid XML, and you cannot use “xp:attributes” with “UIPassThroughTag” components.