[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.ofmp] Re: Getting rid of EJBs in OFMP

Actually that is another good point I might get a chance to join/meet
you in Frankfurt (or otherwise)

I have at least one EJB 2.1 app I am responsible for and upgrading that
to another technology (at least EB3) is also on our long term agenda.

Studies or evaluations to back this decision are certainly welcome and I
could even justify them for a Frankfurt trip (though the date is not so
good for me as I am already scheduled to speak in Berlin on the 13th,
also about JCP with a couple of other Spec Leads, so discussing things
like Monetary System before that would be a great match on the other hand)

Werner

Frederic Conrotte wrote:
> Hi,
> 
> In our way for an OSGi based "Stackless Stack" architecture, we are getting 
> rid of our EJB containers.
> 
> Pro: Who needs full EJB container just for SLSBs ?
> Cons: All OSGi bundles exposing services will have to be deployed thru web 
> server, but web server is required anyway to expose services thru Web 
> services.
> 
> A standard EJB container offers the following services:
> 1- Transaction management
> => replaced by an opensource XA capable transaction manager like Jencks's 
> Geronimo TM.
> 2- Persistence
> => replaced by iBatis or any other ORM
> 3- Remoting
> => replaced by Spring Remoting supported protocols
> 4- Thread management
> => Most stateless service objects don't need to use a single thread model; 
> they simply don't run into complex concurrency issues. If concurrency is 
> involved, it's the programmer's responsability to handle it properly.
> 5- Declarative security
> => done using Spring Security (Acegi)
> 6- Instance pooling =>
> When only one new service object has to be created-in the common case when a 
> service object depends
> only on shared resources such as DataSources-benchmarking indicates that 
> creating a Spring prototype
> performs quite well, and is an acceptable overhead in normal usage. Problem: 
> in the case of prototypes, any configured destruction lifecycle callbacks 
> will not be called. I would advise to stay with the default singleton scope 
> and avoid state to be kept in Service beans.
> 
> 
> Performances with our remote tests suites:
> - RMI: 85,9 sec
> - Springhttp 92,6 sec
> - Hessian: problems with serializer/deserializer
> 
> After several try, performance are quite even between RMI and SpringHttp, 
> obvious since Springhttp is just exporting RMI thru HTTP protocol.
> 
> Both RMI and Springhttp can be deployed at the same time on the server.
> For remote Java-to-Java calls on intranet, we will use RMI to avoid http 
> protocol overhead.
> For remote Java-to-Java calls thru the internet, we will use Springhttp to 
> solve tunneling, compression, encryption problems.
> For remote cross-platform calls, a JAX-RPC solution like Apache CXF.
> 
> Here is a fairly good protocols performance benchmark:
> http://daniel.gredler.net/2008/01/07/java-remoting-protocol-benchmarks/
> 
> Next step: move from current JBoss AS to raw Equinox server
> 
> Regarding Equinox server side architectures, you can find a good abstract in 
> this document:
> http://www.eclipse.org/equinox/documents/eclipsist2007/EclipseSummitTurkey2007-OSGiEquinoxExplained.pdf 
> page 21
> 
> To get rid of JBoss WAR deployers, we will embed an HTTP Server in Equinox 
> (like Jetty):
> http://www.eclipse.org/equinox/server/http_in_equinox.php
> 
> Spring-OSGi did a fairly good job integrating web apps servlets with OSGi 
> HTTP Service, we will likely use it:
> http://static.springframework.org/osgi/docs/1.1.1/reference/html/web.html
> 
> Any questions/remarks are welcome.
> 
> Frederic 
> 
>