Java Enterprise Edition
הטכנולוגיה של שרתים בעולם ה JAVA (מאת עדי לב)
JSP הוא חלק התצוגה של שרתי אינטרנט מבוססי JAVA, אולם הוא רק חלק קטן מסך השירותים הניתנים על ידי שרתי JAVA . מאחורי אפליקציות כבדות מסתתרת שכבת ביניים הנקראת APPLICATION SERVER ולרוב היא J2EE Application Server ראה: www.theserverside.com ליותר מידע עליהם. במאמר סקירה זאת אציין התכונות העיקריות של שרתי J2EE ולמה הם קיימים. שימוש בשרת JAVA מאפשר אי תלות במערכת הפעלה – כתוב פעם אחת הרץ בכל מקום! שרת כזה משמש לרוב כ MIDDLEWARE בין הBROWSER לבין בסיסי הנתונים כגון ORCALE או SQL SERVER ומטפל בעיקר בלוגיקה העסקית של האפליקציה וכן באינטגרציה של מערכות עסקיות – למשל חיבור אתר חנות וירטואלית למערכת הרכש וההספקה. צריך לציין ש SUN הוא המוביל בהגדרות תכולת J2EE אך הוא אינו המוביל במימוש שרתים. בגלל טעויות לוגיסטיות במקום ליצור שרת המבוסס על שרת הדוגמא המסופק חינם עם ספריות ה J2EE הם סיפקו מוצר אחר. זמן רב התבססו על קוד של NETSCAPE שבניגוד לשרת ה WEB ו הLDAP- האחים המוצלחים שלו, היה לוקה בממשק ניהול לא ,WEB בקונפיגורציה מורכבת, במהירות תגובה איטית, בקוד עתיק וכתוצאה מכך הפסיד את הבכורה למתחריו. רק בשנת 2002 יצא SUN בורסיה חדשה קלה לתחזוקה ומהירה S1AS7 אך קצת באיחור... שרתי ה- JAVA הנפוצים המבוססים J2EE: WWW.JBOSS.ORG שרת חינמי הנפוץ בשימוש בתעשייה. WWW.BEA.COM עם שרת WEBLOGIC שרת מספר אחד בתעשייה. וכן שרתי IBM WEBSPHERE, ORACLE AS.
שרת מורכב J2EE מורכב משרת ה WEB ומשרת לוגיקה עסקית EJB. על שרת J2EE יש תהליך התקנה של תת אפליקציות הנקרא DEPLOYMENT מסוגים שונים: אפליקציות WEB המכילה דפי JSP ו SERVLETוספריות עזר ארוזות כקובצי *.WAR מודולים של לוגיקה עסקית - קוד EJB - הארוזים בספריות *.JAR. אפליקציות שלמות המורכבות משכבת WEB ושכבת לוגיקה JAR הארוזות כקובצי *.EAR. כמו כן ניתן להתקין מחברים לאפליקציות עסקיות חיצוניות RAR.* ראה בהמשך. כל הקבצים האלו הם קבצי ZIP. כאשר ה EAR הוא ZIP מקונן: מכיל גם WAR וגם מספר JARS.
כאשר נוסף לכך קבצי XML המשמשים בתור הנחיות למפויי ולקונפיגורציה. השרת נותן שירותים של POOL (מאגר משותף) ושל CACHE (שמירה בזיכרון של אוביקטיים לתקופת זמן מוגבלת) כדי לשפר מהירות תגובה בבקשות לקבלת אבני בניין ותקשורת לבסיסי נתונים. כמו כן נותן שירותי שמירה של הודעות עד קבלתם על ידי המנויים.
שרתים מתקדמים מאפשרים CLUSTRING – היינו שהבקשות מפוזרות בין מספר שרתים להורדת עומס משרת בודד וטיפול ב FAILOVER - בנפילת שרת אחד תועבר הבקשה לשרת אחר כולל אפשרות שחזור המידע הנשמר ב-SESSION של משתמש מקושר.
תכולת השרת: השרת מורכב מהרבה תת מערכות או תת שרתים הנקראים CONTAINERS.
תת שרת ה WEB מכיל טיפול במידע פרטי של כל SESSIONושל האפליקציה. טיפול בפרמטרים בכותרות ה HTTP, בעוגיות, טיפול בטעיות, אפשרות של REDIRECT ו- FORWARD מדף לדף.
תת שרת הלוגיקה מתחזק את הלוגיקה העסקית במספר אבני בניין הנקראים EJB: SESSION BEAN STATELESS אבן בניין ללא זיכרון לאיתור רשומות ולכן ניתן להשתמש בה ביעילות בPOOL STATEFULL SESSION BEAN אבן בניין עם זיכרון הנשמר בלעדית למשתמש עד השחרור. ENTITY BEAN אבן בניין המאותרת על פי מפתח ותומך בCACHE LRU (תהליך שאובייקטים שפחות השתמשו בהם מפונים מהזיכרון ראשית לטובת אובייקטים חדשים)
MESSAGE BEAN אבן בניין המטפלת בהודעות (JMS) ומאפשרת הפעלת תהליכים ברקע - תהליכים הנקראים א-סינכרוניים.
דוגמא למימוש באבני בניין שונים בחנות E-SHOP:
· GET CUSTOMERS NAMES יכול להיות ממומש על ידי SESSION BEAN. · GET ACCOUNT מחזיר ENTITY BEAN שעליו ניתן לבצע ORDER ADD. · ORDER BEEN SUPPLY יכול להתבצע ע"י MESSAGE BEAN כי הפעולה היא א-סינכרונית ואולי מתקבלת מהודעה ממערכת הERP שהיא מערכת הספקה לרוב בשרת אחר. כדי לאפשר גישה למקורות מידע כמו בסיסי נתונים ואינטגרציה עם מערכות מידע אחרות השרת מספק תמיכה בחיבורים הבאים על ידי סדרת תת שרתים: · JDBC POOL מנהל ממשקים לבסיסי נתונים. . TRANSCATION לניהול של אישור סדרת פעולות מורכבות – לרוב מול בסיס נתונים. למשל רק אם כל תת הפעולות הצליחו בבסיס הנתונים יבוצע COMMIT (אישור פעולה) להם. · JCA מחברים לאפליקציות אחרות כמו למערכות מידע חיצוניות –כגון LEGACY COBOL PEOPLESOFT ו-SAP. הארוזים בתור RAR. · WEB SERVICES מבוססי HTTP וXML- (כגון WDSL SOAP ו- UDDI) למטרות אינטגרציה בין מערכות עסקיות המאפשר אינטגרציה עם מערכות שונות שאינן בהכרח J2EE (כולל ASP.NET) · תת שרת לJMS לקבלה ולמשלוח בקשות א-סינכרוניות (ללא תגובה מיידית וגם הודעות המופצות למנויים רבים בדומה לרשימת דיוור הנקראת TOPIC) · לשרת גם תמיכה מוגבלת לשמירה ואיתור של מידע ללא צורך בכתיבה פקודות SQL לבסיסי נתונים על ידי CMP EJB. מודול המוחלף לאחרונה על ידי שכבה כללית יותר הנקראת JDO.
כדי לאפשר אפשרות שינויי קוד מהיר ולהקטין את ההצמדה בין חלקים שונים במערכת יש שימוש בתת שרת השמות - JNDI שתפקידו למפות שם לוגי למקור לאבני בניין או לחיבורים לבסיסי נתונים. בדרך כלל מאתרים תוכנית מסוג יצרן לאוביקטיים אחרים -FACTORY- לדוגמא DATA SOURCE המאפשר קבלת תקשורת CONNECTION לבסיס נתונים. לאבני הבניין מסוג EJB היצרן נקרא HOME שעליו ניתן ליצר או למצוא אבן בניין על ידי שימוש בפקודות CREATE (צור) או FIND (חפש).
לסיכום: תשתיות ה J2EE נותנות לך אפשריות של קבלת שירות אמין מהיר וסטנדארטי, תוך כדי אפשרות בחירת השרת על פי דרישות הלקוח. בהיותו מבוסס JAVA מאפשר אי תלות במערכת ההפעלה ובמעבד. מאפשר הרחבת ושיפור השרות בגדול מספר המשתמשים ע"י CLUSTERING, מקצר זמן פיתוח בכתיבת שרתים ובכתיבת קוד. העלות יש צורך רב יותר להשקיע מחשבה בבחירת אבני הבניין הנכונים לבעיה. בקבצי התקנה ובתהליכי התקנה מורכבים יותר, ובכוונון האפליקציה על השרת.
מה בעתיד: בתחום ה JSP נוצרים תשתיות של אבני בניין החזקות יותר מ HTML כמו טבלה של בסיסי נתונים. JFC ו STRUST הם חלק מתשתיות המספקות הפרדה בין תצוגה בקרה ולוגיקה.
מצד שני אנו רואים התחזקות של תהליכי אינטגרציה בין שרתים עסקיים. זה התחיל ב WEB SERVICES וממשיך במנועי WORKFLOW מבוססי BEPL והם חלק מהותי משרתי אינטגרציה. במקביל מתפתחים מנועי BIZ RULES המגדירים חוקים הגורמים להפעלה אוטומטית של תהליכים בהשתנות המידע ומגדילים את יעילות השימוש בתשתיות IT. סביר להניח שחלק ניכר מתכונות אלו יתווספו בהמשך לפתרון הסטנדארטי של שרתי J2EE.
מקורות מידע: http://java.sun.com/j2ee http://www.theserverside.com http://www.bea.com http://www.jboss.org http://www7b.software.ibm.com/wsdd