Wednesday, October 05, 2011

Technically Speaking

Clarification of Oracle ADF State Management

By Ammar Sajdi

May 15, 2011

For the sake of this discussion, it will assumed that there are only two users accessing the application and only one application module available in the application module poolThe following is an attempt to clarify how exactly ADF manages application module pool.

No Activity

  • Application Module in unreferenced State
  • No Reference to any Client page in the Http Session

First User Sends a Request

  • At the beginning of the Request, a session references a Data Control object which in turns looks for an Application Module (AM) in the pool. It finds an unreferenced AM and grabs it for its use AM1 ;( An unreferenced AM is one that does not hold active content for any user session). During the request, the status of the AM is changed to BUSY and the AM instance contains User1 transaction information together with Current row information etc ..

  • At the End of the Request, AM1 is checked back to the Pool with AM states changed to Referenced (Or Managed). Note that the AM is back in the pool without constraints and is not tied to any specified session.


  • User Sends another Request, Second user is still Idle

  1. The Data Control (which resides in the same user session) will again look for AM in the pool and since the pool uses session affinity algorithm, an attempt is made to return the same previous AM instance. The attempt will be successful, because no other session is competing for the AM in the pool. AM1 will be returned. Its status will again become Busy
  2. At the end of the request, AM1 is returned back to the pool in Managed state.

  • Second User Sends a Request

  1. At the beginning of the Request, the second user Data Control will try to grab AM1. AM1 is however in a managed state and is referenced by the first Session. Any attempt to over write the contents of AM1 shall jeopardize the first user transaction. Therefore, the AM pool management needs to make AM1 available to user2, but only after it recycles the contents of AM1. A process called passivation starts, in which AM1 contents are persisted into the Database or to an OS file. This is called a snapshot. After passivation is completed, AM1 is now in an UNREFERENCED State and at this moment, Session2 Data Control grabs AM1, changes it status to BUSY and becomes the active AM for user2.

  1. At the end of the request, the Data control in the second user session releases the AM back to the Pool in MANAGED state

  • First User Sends a Request

  1. When the first user sends another request, he/she should not be aware of the fact that AM1 now references a different user session. In order to make this completely transparent, the Pool Management will recycle AM1 again, after it persists AM1 state through passivation, it will carry out an activation process. This process reads User1 snapshot from the Persisted snapshot and back into AM1. AM1 now references User1 session and maintains its current transaction.

  1. 2 Finally, at the end of the request, the AM1 is released back to the application module waiting to serve another request. If the request is for the first user, the process continues without passivation/activation cycle. If on the other hand, the request is for the second user, user2 previous snapshot needs to be activated.


Activation / passivation cycle does not take place at every request. (one exception is when failover is enabled). Otherwise, it only occurs when user requests far exceed the no of available AM.

There are parameter that gives you control over the AM in the pool. Like Max, min etc …

Note that in the above scenario , it neither of the users issues a submit or a rollback, while at the same time the contents of the transactions are maintained across several requests.

It is important to understand that whenever the session passivated, a JDBC database rollback is issued. This rollback is not related to the Application Module, your EO will remain intact. But you need to be careful about stored procedures that you executed with DML, or information posted to the database through POST_CHANGES operation.

When the session is passivated and then activated to another user, its JDBC connection remains with it. Therefore, any session information are lost. This is important when you design RLS, and that is why we need to set the context information at each PrepareSession event.

Tuesday, July 19, 2011

Saturday, April 09, 2011

Ernst And Young Jordan Entrepreneur of the Year

I have been nominated for the Ernest and Young Jordan Entrepreneur of the Year, 2011.
Today, there is an article at Al Ghad News paper

Ammar 9.4.2011

Friday, March 04, 2011

Cebit - Hannover

Every now and then, REALSOFT participates in the German Gigantic IT expo called Cebit.
Hannover is in the northern part of Germany and it bitterly cold at end of February and beginning of March. What is most noticeably is the shrinkage in the size of exhibiting companies year after year. There are almost 32 Halls in the fair ground, but it seems that there are almost 10 vacant halls.

Sunday, February 13, 2011

Nokia and Microsoft

What would you anticipate to happen when the world's largest supplier of mobile phones (Nokia) join forces with the software giant like Microsoft?

Microsoft and Nokia have announced a partnership in which Nokia starts building mobile phones that run Microsoft phone 7 windows operating System.

One thing for sure, they have a long way to go to catch up with Google's Android! If they move fast enough, who knows, Microsoft current small market is bound to explode


Thursday, January 27, 2011


[b]أسبِّح باسمك اللهُ

وليس سواكَ أخشاهُ

وأعلَمُ أن لي قدراً سألقاهُ (إشباع الهاء) . سألقاه

...وقد عُلِّمتُ في صغري بأن عروبتي شرفي وناصيتي وعنواني

وكنا في مدارسنا نردد بعضَ الحانِ

"بلاد العُرب أوطاني .. وكل العرب أخواني"

وكنا نرسمُ العربيَّ ممشوقاً بهامتِه

لَهُ (إشباع الهاء) صدرٌ يصدُّ الريحَ إذ تعوي .. مهاباً في عباءته

وكنا مَحْضَ أطفالٍ تحرّكنا مشاعرُنا

ونسْرحُ في الحكايات التي تروي بطولتَنا

وأن بلادنا تمتد من أقصى إلى أقصى

وأن حروبنا كانت لأجْل المسجدِ الأقصى

وأن عدوَّنا صهيونَ شيطانٌ له ذيلُ

وأن جيوش أمتِنا لها فعلٌ كما السّيلُ

سأُبحرُ عندما أكبرْ

أمرُّ بشاطئ البحرين في ليبيا

وأجني التمرَ من بغدادَ في سوريا

وأعبر من موريتانيا إلى السودان

أسافر عبْر مقديشيو إلى لبنان

وكنتُ أخبئ الألحان في صدري ووجداني

"بلاد العُرْب أوطاني .. وكل العرب أخواني"

وحين كبرتُ .. لم أحصلْ على تأشيرةٍ للبحر .. لم أُبحرْ

وأوقفني جوازٌ غيرُ مختومٍ على الشباك .. لم أعبرْ

كبُرتُ أنا وهذا الطفل لم يكبرْ

• * * *

تقاتِلُنا طفولتُنا

وأفكارٌ تعلَّمنا مبادءَها على يدِكم أيا حكامَ أمتِنا

ألستم من نشأنا في مدارسكم ؟

تعلَّمنا مناهجَكم

ألستم من تعلمنا على يدكم بأن الثعلبَ المكارَ منتظِرٌ سيأكل نعجةَ الحمقى إذا للنوم ما خَلَدُوا ؟

ألستم من تعلمنا على يدكم بأن العودَ محميٌّ بحزمته ضعيفٌ حين ينفرد ؟

لماذا الفُرقةُ الحمقاءُ تحكمُنا ؟

ألستم من تعلمنا على يدكم أن اعتصموا بحبل الله واتحدوا ؟

لماذا تحجبون الشمسَ بالأَعلام؟

تقاسمتم عروبتَنا ودَخَلاً بينكم صِرنا كما الأنعام

سيبقى الطفل في صدري يعاديكم

تقسمنا على يدكم فتبت كل أيديكم

أنا العربيُّ لا أخجلْ

وُلِدتُ بتونسَ الخضراءِ من أصلٍ عُمَانيٍّ وعُمري زادَ عن ألفٍ وأمي لم تزل تحبَلْ

أنا العربي في بغدادَ لي نخلٌ وفي السودانِ شرياني

انا مصريُّ موريتانيا وجيبوتي وعَمَّانِ

مسيحيٌّ وسني وشيعي وكردي وعلوي ودرزي .. أنا لا أحفظُ الأسماءَ والحكامَ إذ ترحلْ

سَئِمنا من تشتُتِنا وكلُّ الناسِ تتكتّل

ملأتُمْ دينَنَا كذباً وتزويراً وتأليفا

أتجمعنا يدُ الله ؟ وتبعدنا يد (الفيفا) ؟؟

هجرْنا دينَنا عَمْدا فَعُدنا الأَوْسَ والخزرج

ونعبدُ نارَ فتنتِنا وننتظرُ الغبا مَخرج

• * *

أيا حكامَ أمتنا

سيبقى الطفلُ في صدري يعاديكم


ويعلنُ شعبَنا العربيَّ مُتَّحِدا

فلا السودانُ منقسمٌ ولا الجولانُ محتَلٌّ ولا لبنانُ منكسر يداوي الجرحَ منفردا

سيجمعُ لؤلؤاتِ خليجِنا العربيِّ في السودان يزرعُها فيَنبتُ حبُّها في

المغربِ العربيِّ قمحاً يعصُرون الناسُ زيتاً في فلسطينَ الأبيّةِ يشربون

الأهلُ في الصومال أبدا

سيُشعلُ من جزائرِنا مشاعلَ ما لها وهنُ

إذا صنعاءُ تشكونا فكلُّ بلادِنا يمنُ

سيخرجُ من عباءتِكم – رعاها الله – للجمهور مُتَّقِدا

هو الجمهورُ لا أنتم

أتسمعني جحافلُكم ؟

أتسمعني دواوينُ المعاقلِ في حكومتِكم ؟

هو الجمهور لا أنتم ولا يخشى لكم أحدا

هو الإسلام لا أنتم فكفّوا عن تجارتكم وإلا صار مرتدا

وخافوا .. إن هذا الشعبَ حمَّال

وإن النوقَ إن صُرِمَتْ فلن تجدوا لها لبناً ولن تجدوا لها ولدا

أحذِّرُكم .. سنبقى رغم فتنتِكم فهذا الشعبُ موصولُ

حبائلُكم وإن ضَعُفَتْ فحبلُ اللهِ مفتولُ

أنا باقٍ .. وشرعي في الهوى باقِ

سُقِينا الذلَّ أوعية .. سُقينا الجهلَ أدعية

ملَلْنا السقْيَ والساقي

سأكبرُ تاركاً للطفل فرشاتي وألواني

ويبقَى يرسم العربيَّ ممشوقا بهامته ويبقى صوتُ ألحاني

"بلاد العرب أوطاني .. وكل العرب أخواني"

Saturday, January 01, 2011

The Astonishing Hypothesis

"You," your joys and your sorrows, your memories and your ambitions, your sense of personal identity and free will, are in fact no more than the behavior of a vast assembly of nerve cells and their associated molecules.

The Astonishing Hypothesis: The Scientific Search For The Soul is a book written by no ordinary person. It is written by Francis Crick, the co-discoverer of the DNA double Helix structure in 1953 and a Noble laureate - 1963. Died in 2004 due to Colon Cancer.

My attention was caught to the DNA world after watching a TV interview with James Watson, who was Francis Colleague and the other co-discoverer of the double Helix. I have finished reading two of Watson's books and was intrigued by his "DNA - The secret of Life" Book.

Understanding how things inside your cells work opens up a new dimension of arts and science to the frontiers of you thinking. Moreover, a great sense of appreciation to a breath taking process that bewilders your mind and leaves you totally seized by its beauty.

Getting Ref of the View Object referenced by the current Iterator binding for One iterator page without knowing the name of the iterator

Getting Ref of the View Object referenced by the current Iterator binding for One iterator page without knowing the name of the iterator ...