This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 337037 - CS: Distributed ManyToOne Enterprise Application Example using EclipseLink JPA as the shared persistence layer
Summary: CS: Distributed ManyToOne Enterprise Application Example using EclipseLink JP...
Status: ASSIGNED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Eclipselink (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 7
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Nobody - feel free to take it CLA
QA Contact:
URL: http://wiki.eclipse.org/EclipseLink/E...
Whiteboard:
Keywords:
Depends on: 211206 337034 337035 338708 337036
Blocks: 288275 294745 308477 310849 332312 332953
  Show dependency tree
 
Reported: 2011-02-12 11:57 EST by Michael OBrien CLA
Modified: 2022-06-09 10:25 EDT (History)
1 user (show)

See Also:
michael.f.obrien: documentation+


Attachments
Example (collatz conjecture) distributed EE application framework using EclipseLink JPA as the persistence layer - initial submission (103.39 KB, patch)
2011-02-16 16:29 EST, Michael OBrien CLA
no flags Details | Diff
Distributed framework for Collatz EAR (without wlfullclient.jar) (50.85 KB, application/x-zip-compressed)
2011-02-16 18:56 EST, Michael OBrien CLA
no flags Details
Distributed 1 of n (SE client of EJB SSB) for Collatz (without wlfullclient.jar) (48.31 KB, application/x-zip-compressed)
2011-02-16 18:57 EST, Michael OBrien CLA
no flags Details
Rev 9000 - max path/value normalization (42.49 KB, patch)
2011-02-22 06:30 EST, Michael OBrien CLA
no flags Details | Diff
on-JSF2 Ajax Servlet get/post combination as a performance baseline prior to using the JSR-311 pattern (15.56 KB, patch)
2011-03-09 11:06 EST, Michael OBrien CLA
no flags Details | Diff
enable jsr-311 jax-rs capability on WebLogic 10.3.4 (5.10 KB, patch)
2011-03-21 09:55 EDT, Michael OBrien CLA
no flags Details | Diff
Multithreaded client phase 1 - default to (hard + soft (HT) cores) to utilize 80-90% of multicore CPU (20.90 KB, patch)
2011-05-15 15:22 EDT, Michael OBrien CLA
no flags Details | Diff
Optimize read only query using COUNT - resulting in significant performance gains when used by an AJAX client (6.44 KB, patch)
2011-08-02 11:20 EDT, Michael OBrien CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael OBrien CLA 2011-02-12 11:57:29 EST

    
Comment 1 Michael OBrien CLA 2011-02-14 15:14:55 EST
>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
Comment 2 Michael OBrien CLA 2011-02-16 16:29:09 EST
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]
Comment 4 Michael OBrien CLA 2011-02-16 18:54:02 EST
>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
Comment 5 Michael OBrien CLA 2011-02-16 18:56:28 EST
Created attachment 189146 [details]
Distributed framework for Collatz EAR (without wlfullclient.jar)
Comment 6 Michael OBrien CLA 2011-02-16 18:57:41 EST
Created attachment 189147 [details]
Distributed 1 of n (SE client of EJB SSB) for Collatz (without wlfullclient.jar)
Comment 7 Michael OBrien CLA 2011-02-22 06:30:53 EST
Created attachment 189471 [details]
Rev 9000 - max path/value normalization
Comment 8 Michael OBrien CLA 2011-03-07 20:44:39 EST
>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.
Comment 9 Michael OBrien CLA 2011-03-09 11:06:26 EST
Created attachment 190771 [details]
on-JSF2 Ajax Servlet get/post combination as a performance baseline prior to using the JSR-311 pattern
Comment 11 Michael OBrien CLA 2011-03-21 09:55:52 EDT
Created attachment 191613 [details]
enable jsr-311 jax-rs capability on WebLogic 10.3.4
Comment 13 Michael OBrien CLA 2011-04-24 12:46:48 EDT
>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
Comment 14 Michael OBrien CLA 2011-05-15 15:22:29 EDT
Created attachment 195673 [details]
Multithreaded client phase 1 - default to (hard + soft (HT) cores) to utilize 80-90% of multicore CPU
Comment 15 Michael OBrien CLA 2011-05-15 15:27:47 EDT
>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
Comment 16 Michael OBrien CLA 2011-08-02 11:20:12 EDT
Created attachment 200727 [details]
Optimize read only query using COUNT - resulting in significant performance gains when used by an AJAX client
Comment 17 Eclipse Webmaster CLA 2022-06-09 10:25:35 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink