General
Serializing/Deserializing
The class for the root element 'blah' could not be found
Dependencies
Logging
Building from sources
Alternative projects
As of version 0.3.2 EJOE uses NIO only for connection
accept/select operations, so that invoking of (de)serialize
adapters can be done directly using blocking io streams.
This should be a significantly improvement. Support for
partial NIO read/write was also added in version 0.3.2.
Even though blocking IO streams perform better in most
enviroments, the performance differences aren't so
abundantly clear now. If you are using a prior version than
0.32 there is no possibility to avoid these performance
issues.
Take a look at this
article if you want to know why usage of non-blocking
IO can cause some major drawbacks in EJOE.
As of version 0.3.2 this shouldn't happen anymore when using blocking IO. Don't use EJServer.enableNonBlockingIO().
Use blocking IO (see above) and/or Increase the value for the max. used memory:
java -mx256m -cp ...
Good news: As of version 0.3.2 EJOE offers selective compression. It will be used if compression is enabled in the EJOE server and a client requests compression.
To enable compression on serverside use:
ejserver.enableCompression();
To request compression on clientside use:
ejclient.enableCompression(true);
Not at the moment. We are looking for options how to support HTTP-Tunneling in conjunction with java nio. Hints are very welcome...
Yes, from version 0.3.3 EJOE uses the XStreamAdapter (de.netseeker.adapter.XStreamAdapter) as default (de)serialization mechanism.
The XStreamAdapter is based on the great XStream library
which is known to (de)serialize nearly everything on the (java) planet.
For prior versions you have to enable the XStreamAdapter in EJServer and EJClient manually:
EJServer ejserver = new EJServer(myServerHandler, new XStreamAdapter())
This feature was implemented in version 0.3.3.
Prior versions doesn't support selective adapter handling and require
the same SerializeAdapter on client- and serverside.
The fastest adapter is the ObjectStreamAdapter. Be aware that using this adapter has some (possible) drawbacks:
Another fast solution is to use the CastorAdapter with a castor mapping file. Again this solution has drawbacks too:
The class for the root element 'blah' could not be found
Either you are using the CastorAdapter without a mapping file or the adapter can not locate the mapping file. In general using the CastorAdapter makes sense only when providing a castor mapping file.
1.4 or later.
The following dependencies are required when using the default SerializeAdapter (de.netseeker.adapater.XStreamAdapter):
They can be avoided when using the ObjectStreamAdapter or JavaBeansXmlAdapter.The following dependencies are required only when using the CastorAdapter:
EJOE uses the standard java logging mechanism (java.util.logging).
See http://javaalmanac.com/egs/java.util.logging/pkg.html#Configuration,
respectively http://javaalmanac.com/egs/java.util.logging/Props.html for details.
Download the source archive or checkout from CVS (see the download and cvs links on the left side) and run maven with the following commandline:
maven dist -Djava.util.logging.config.file=maven-logging.properties
Sure there are. We don't know all and the following list is neither a recommendation nor a benchmark and may contain also projects which aren't really related to EJOE.