Eigene ServerHandler

Wenn Reflection zu langsam, unsicher oder schlichtweg unpassend ist, weil beispielsweise zwischen Empfang einer Client-Anfrage durch EJOE und der Verarbeitung durch die externe Geschäftslogik noch Zwischenschritte (Prüfungen, zusätzliche Logik etc.) durchzuführen sind, dann bietet sich die Implementierung eines eigenen ServerHandlers an.

EJOE stellt an eigene ServerHandler lediglich zwei Anforderungen:

  1. Implementieren des Interfaces de.netseeker.ejoe.handler.ServerHandler
  2. ServerHandler müssen threadsafe implementiert werden
Für den zweiten Punkt müssen zur erfolgreichen Umsetzung folgende Hinweise beachtet werden:

EJOE behandelt ServerHandler de facto als eine Art Singletons. Ein ServerHandler kann in EJOE in genau einer Instanz existieren. Bei der Implementierung eines ServerHandlers sollte auf generelle Synchronisation zum Erreichen der Threadsicherheit verzichtet werden, da dies EJOEs Multithreading nachhaltig beeinträchtigen würde.
package de.netseeker.ejoe.handler;
/**
* Simple interface defining the entry point for all server handlers.
* Server handlers are the working horses which the caller must implement.
* Server handlers take the transported input objects send by the client
* application and return none, one or more return values.
*
* @author netseeker aka Michael Manske
* @since 0.3.0
*/
public interface ServerHandler
{
	/**
	* Handles a client request
	*
	* @param obj The input object transported by EJOE
	* @return null or a valid return value. If you want return custom datatypes,
	* eg. Your own beans and do not want (or not be able) to deploy the classes of
	* these datatypes on the client, you can turn on EJOEs remote classloading feature.
	*/
	public Object handle( Object obj ) throws Exception;
}