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.

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

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.

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

REST & Security: Why HTTP GET is insecure (and the other methods too)  

By Sven Hasselbach | 2/26/15 6:43 AM | - | Added by Johnny Oldenburger

Yesterday René commented that submitting username and password with HTTP GET is insecure, because they are submitted in clear text over the wire as part of the URI. At the first moment, I did not give some thought about it, because it is known fact that data added to an URI are less secure. They are added to the browser history, are logged in the requests on servers, and every proxy.

Rest & Security: More about the DominoStatelessTokenServlet  

By Sven Hasselbach | 2/25/15 8:09 AM | - | Added by Johnny Oldenburger

During the last days I have refined the DominoStatelessTokenServlet a little bit. It is now a pre-beta release, and I think it is time to explain some details about it. While it is still a proof-of-concept, it demonstrates how a stateless authentication can easily be implemented. A lot of testing is still required until it is ready for production use, but I think it provides really cool things for the domino environment.

Rest & Security: A Stateless Token Servlet  

By Sven Hasselbach | 2/10/15 8:22 AM | - | Added by Johnny Oldenburger

I have uploaded some of my projects to GitHub, including an alpha version of a stateless token servlet. The servlet has it’s own authentication mechanism (the password is currently not validated), and for developing purposes it uses HTTP GET. In a future release, the token will be transfered as a HTTP header. Additionally, the HTTP method will be changed to POST.

IBM Bluemix: Filemode-Problems with GitHub  

By Sven Hasselbach | 2/5/15 11:38 AM | - | Added by Johnny Oldenburger

When creating your own build pack for IBM Bluemix applications (or other Cloud Foundry based solutions), it is required to set the correct file mode for the executables before initially pushing them to GitHub. Otherwise the compilation will fail, and it seems to be a known bug for GitHub based repositories that the mode cannot be changed later.

REST & Security: Same-Origin Policy / CORS  

By Sven Hasselbach | 2/2/15 8:16 AM | - | Added by Johnny Oldenburger

The “Same-orginin policy“ is an important concept for protecting web applications. In short, only resources from the same domain are allowed, everything else is permitted. To allow access other domains in your application, you have to enable “CORS“, a tutorial how to enable this on a Domino server was written by Mark Barton a while ago.

HowTo: Vaadin on Domino (4)  

By Sven Hasselbach | 1/26/15 2:18 PM | - | Added by Johnny Oldenburger

Now, let’s access some Domino resources. I have created a database named “VaadinResources.nsf“, containing a normal image resource, and an image added via package explorer to the “WEB-INF” folder. Vaadin provides stream resources, which allows creating of dynamic resources. These resources handle “InputStream” objects, which we can grab from Domino via Java NAPI.

HowTo: Vaadin on Domino (3)  

By Sven Hasselbach | 1/25/15 4:19 PM | - | Added by Johnny Oldenburger

HowTo: Vaadin on Domino (3). Let’s create another application, based on Vaadin’s AddressBook example. You can download the source code directly or grab the code from the repository; it is a single class file named “AddressbookUI” only. After importing (or manually creating) the class in the HelloVaadin plug-in, the servlet configuration in “web.xml” must be updated.

HowTo: Vaadin on Domino (2)  

By Sven Hasselbach | 1/25/15 4:16 PM | - | Added by Johnny Oldenburger

HowTo: Vaadin on Domino (2). When running your own servlet, you eventually want to access the Domino environment. To do this, some changes has to be made to the HelloVaadin plug-in. Open the “MANFIFEST.MF” and open the “Dependencies” tab. Add the plug-in “com.ibm.osgi.domino.core” to the list of required plug-ins.