Community
Participate
Working Groups
>Problem: require a real-world distributed app that can be used as a case study for the following issues. - performance (we need a way to hammer a JPA based server and change the client load at runtime) - management (test framework to try out central management of the server and clients) - analytics (how can we report JVM and persistence metrics with minimal thread overhead) - concurrency (how do we handle under-load forced OptimisticLockException conditions without resorting to synchronized blocks) - @Singleton SB for example - distributed memory (for clients that are not running persistence on their own - where they would benefit from an L2 cache like Coherence, ehCache or Terracotta - we need to prototype scenarios where the database or EclipseLink L1 in-memory cache can act as a distributed shared memory for the remote clients). Specifically, how do we propagate changes from some clients to others using both a 1) Star network of ManyToOne for clientsToServer 2) Mesh network of ManyToMany for clientsToClients We will develop a n:1 distributed application with many clients connected to one central persistence server. The research page is located here. http://wiki.eclipse.org/EclipseLink/Examples/Distributed
Created attachment 189131 [details] Example (collatz conjecture) distributed EE application framework using EclipseLink JPA as the persistence layer - initial submission >Refer to the following to enable the 5 projects EAR, EJB, WAR model.JAR, http://wiki.eclipse.org/EclipseLink/Examples/Distributed 1) Install Eclipse 3.6 Helios EE edition 2) Add WebLogic Server Tools in "add new server" 3) create a server configuration to a WebLogic 10.3.4.0 domain 4) (you may need to go into the WAR and enable the JSF 2.0 component (choose the JSF 2.0/1.0.0.0_2-0-2 version)) -this will setup enable JSF 2.0 (on top of the out of the box JSF 1.2 in WebLogic) see http://wiki.eclipse.org/Image:Eclipse_36_helios_for_weblogic_1034_jsf2_facet.JPG 5) start Derby before starting WebLogic c:\opt\derby10530\bin\startNetworkServer.bat 6) start weblogic in Eclipse 7) Run on server 8) Run SEClient from the current machine as is from eclipse, or a remote JVM using the following command line if running remotely - copy the remote interface CollatzFacadeRemote and all the model classes or jar to the client bin directory (in packages) run C:\_experiment\0\org.eclipse.persistence.example.distributed.CollatzSE\bin>java -cp .;../resource/wlfullclient.jar org.eclipse.persistence.example.distributed.collatz.presentation.SEClient your_client_name_id t3://127.0.0.1:7001 9) After the first run (you should turn off DDL generation in persistence.xml so the database is not cleared on each redeploy) <!--property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> <property name="eclipselink.ddl-generation.output-mode" value="both"/--> >you should see the following in the client after about 10 sec when the first unitOfWork is processed collatz: Remote Object: ClusterableRemoteRef(2112014917424158770S:127.0.0.1:[7001,7001,-1,-1,-1,-1,-1]:base_domain:AdminServer [2112014917424158770S:127.0.0.1:[7001,7001,-1,-1,-1,-1,-1]:base_domain:AdminServer/308])/308 _collatz: results sent to server after 5610 ms _collatz: process UnitOfWork: org.eclipse.persistence.example.distributed.collatz.model.UnitOfWork@66( id: 66) ID#66 1048579-2097154 from: gx660a >you should see the following on the server _collatz: requestUnitOfWork(1048578-2097154) for processor org.eclipse.persistence.example.distributed.collatz.model.ActiveProcessor@1( id: 1) [EL Fine]: 2011-02-16 16:33:28.411--ClientSession(155963)--Connection(4029435)--Thread(Thread[[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--INSERT INTO UNITOFWORK (ID, ENDTIMESTAMP, EXTENT, INITIAL, MAXPATH, MAXVALUE, RETRIES, STARTTIMESTAMP, VERSION, KNOWNMAX_ID, KNOWNPATH_ID, PROCESSOR_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [66, null, 2097154, 1048579, 523, 90239155648, 0, 1297890208411, 1, null, null, 1]
>Initial patch checkin to trunk 2.3 https://fisheye2.atlassian.com/changelog/eclipselink?cs=8975 https://fisheye2.atlassian.com/changelog/eclipselink?cs=8976
>EJB project source - we need to separate the @Local and @Remote interfaces from their @Stateless session bean implementation https://fisheye2.atlassian.com/changelog/eclipselink?cs=8977
Created attachment 189146 [details] Distributed framework for Collatz EAR (without wlfullclient.jar)
Created attachment 189147 [details] Distributed 1 of n (SE client of EJB SSB) for Collatz (without wlfullclient.jar)
Created attachment 189471 [details] Rev 9000 - max path/value normalization
>Avoiding Obstructed SVN Web Project For some reason SVN is reporting an obstructed JSF web project whenever I modify the web project. I narrowed it down to Eclipse Helios causing the "entries" file at the root to be deleted on refresh. C:\view_w36b\examples\org.eclipse.persistence.example.distributed.CollatzWeb\.svn\entries The fix is to keep a copy of this file (as long as the root structure does not change) and replace it after a refresh in Eclipse - just before commit.
Created attachment 190771 [details] on-JSF2 Ajax Servlet get/post combination as a performance baseline prior to using the JSR-311 pattern
https://fisheye2.atlassian.com/changelog/eclipselink?cs=9115 https://fisheye2.atlassian.com/changelog/eclipselink?cs=9116 https://fisheye2.atlassian.com/changelog/eclipselink?cs=9117
Created attachment 191613 [details] enable jsr-311 jax-rs capability on WebLogic 10.3.4
https://fisheye2.atlassian.com/changelog/eclipselink?cs=9141
>Multithreaded contention research continues - currently SimpleDateFormat and some SAXParser implementations in a SAXBuilder are being investigated - without using synchronization http://wiki.eclipse.org/EclipseLink/Examples/Distributed#Thread_Contention_for_Shared_Resources
Created attachment 195673 [details] Multithreaded client phase 1 - default to (hard + soft (HT) cores) to utilize 80-90% of multicore CPU
>Multithreaded SE client in SVN rev # 9382 - reaches up to 90% CPU utilization for 8 threads on a 4 core HT Core i7 920 https://fisheye2.atlassian.com/changelog/eclipselink?cs=9382
Created attachment 200727 [details] Optimize read only query using COUNT - resulting in significant performance gains when used by an AJAX client
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink