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.

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.

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.

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

HowTo: Vaadin on Domino  

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

HowTo: Vaadin on Domino. This example requires a valid XPages Plugin Development Environment. The execution environment used is the XPages Domino JRE. The <init-param> tag inside <servlet> defines our UI class of our application. We will create this class later. The <servlet-mapping> defines a mapping inside the webapplication path.

Security: Usefull HTTP Response Headers  

By Sven Hasselbach | 1/15/15 10:45 AM | - | Added by Oliver Busse

Here is a list of usefull HTTP headers for responses you should know about

REST & Security: CSRF Attacks  

By Sven Hasselbach | 12/30/14 9:02 AM | - | Added by Johnny Oldenburger

In this post I will demonstrate how a do a CSRF attack against a XPages REST service.Let’s assume that we have a custom REST service on a XPage. To keep the example as simple as possible, this service returns the posted data back to the requesting browser only, nothing more and nothing less. On my web server, I have created a simple HTML page with a form.

XPages: WebContent Files (3) – Create a Minimizer Servlet  

By Sven Hasselbach | 11/27/14 4:37 AM | - | Added by Johnny Oldenburger

Because of Stefano Fois comment I decided to write an example about how to create a minimizer servlet for Domino which compresses JavaScript resources on the fly. This is, again, a simple Proof-Of-Concept, nothing more and nothing less.

XPages: WebContent Files (2) – Manipulate exitsting files using the Java NAPI  

By Sven Hasselbach | 11/19/14 10:51 AM | - | Added by Oliver Busse

In this article, I will shortly give an overview how you can edit existing file from the WebContent folder (Don’t miss the first article on this topic). First, let’s create a view to display the design elements of the WebContent folder. To do this, I have an old school LotusScript Agent which updates the selection formula of a view (Some details about this technique can be found here).

XPages: WebContent Files (1) – Create a file using the Java NAPI  

By Sven Hasselbach | 11/18/14 9:49 AM | - | Added by Johnny Oldenburger

The great Marky Roden has written an interesting article about using the WebContent folder instead of standard domino design elements. To create or manipulate these files programmatically, you can use the Java NAPI.

XPages: Running Google’s Chrome V8 Javascript Engine  

By Sven Hasselbach | 11/9/14 8:26 AM | - | Added by Johnny Oldenburger

After answering a question on Stackoverflow.com about the Prototype problematic in the XPages SSJS engine, I thought of running another Javascript engine on top of Domino. While you can use the JavaScripting API JSR223, I choosed the jav8 project for a test how this can be realized.