מדריך להגדרת EJB

1. סקירה כללית

במאמר זה נדון כיצד להתחיל עם פיתוח Enterprise JavaBean (EJB).

JavaBeans ארגוני משמשים לפיתוח רכיבים ניתנים להרחבה, מבוזרים, בצד השרת ובדרך כלל עוטף את ההיגיון העסקי של היישום.

נשתמש WildFly 10.1.0 כפתרון השרתים המועדף עלינו, עם זאת, אתה רשאי להשתמש בכל שרת יישומי Java Enterprise שבחרת.

2. התקנה

נתחיל בדיון על התלות של Maven הנדרשת לפיתוח EJB 3.2 וכיצד להגדיר את שרת היישומים WildFly באמצעות תוסף Maven Cargo או באופן ידני.

2.1. תלות של Maven

על מנת להשתמש ב- EJB 3.2, וודא שאתה מוסיף את הגרסה האחרונה תלות החלק שלך pom.xml קוֹבֶץ:

 javax javaee-api 7.0 מסופק 
תוכלו למצוא את התלות האחרונה במאגר Maven. תלות זו מבטיחה כי כל ממשקי ה- API של Java EE 7 זמינים בזמן הקומפילציה. ה בתנאי היקף מבטיח כי לאחר הפריסה, התלות תסופק על ידי המכולה בה נפרס.

2.2. התקנת WildFly עם Maven Cargo

בואו נדבר על אופן השימוש בתוסף Maven Cargo להגדרת השרת.

הנה הקוד לפרופיל Maven המספק את שרת WildFly:

 wildfly-standalone org.codehaus.cargo cargo-maven2-plugin $ {cargo-maven2-plugin.version wildfly10x //download.jboss.org/ wildfly / 10.1.0.Final / wildfly-10.1.0.Final.zip 127.0. 0.0 מבחן 9990 משתמש: admin1234! 

אנו משתמשים בתוסף להורדת ה- WildFly 10.1 מיקוד ישירות מאתר WildFly. אשר מוגדר לאחר מכן, על ידי וודא כי ה- שם מארח הוא 127.0.0.1 וקביעת הנמל ל- 9990.

ואז אנו יוצרים משתמש בדיקה באמצעות ה- מטענים.שירותים מאפיין, עם מזהה המשתמש testUser והסיסמה admin1234 !.

כעת, לאחר שהושלמה תצורת התוסף אנו אמורים להיות מסוגלים להתקשר ליעד Maven ולהוריד את השרת, להוריד אותו ולהפעיל אותו ולהפיץ את היישום.

לשם כך, נווט אל ejb-remote ספריה והפעל את הפקודה הבאה:

מטען חבילה נקי mvn: לרוץ

כאשר אתה מריץ פקודה זו בפעם הראשונה, הוא יוריד את קובץ ה- zip של WildFly 10.1, יחלץ אותו ויבצע את ההתקנה ואז יפעיל אותו. זה יוסיף גם את משתמש הבדיקה עליו דנו לעיל. הוצאות להורג נוספות לא יורידו שוב את קובץ ה- zip.

2.3. הגדרה ידנית של WildFly

על מנת להתקין את WildFly באופן ידני, עליך להוריד את קובץ zip ההתקנה בעצמך מאתר wildfly.org. השלבים הבאים הם תצוגה ברמה גבוהה של תהליך הגדרת שרת WildFly:

לאחר שהורדת את תוכן הקובץ וריכוס אותו למיקום שבו ברצונך להתקין את השרת, הגדר את משתני הסביבה הבאים:

JBOSS_HOME = / משתמשים / US USER /../ wildfly.x.x גמר JAVA_HOME = `/ usr / libexec / java_home -v 1.8`

ואז ב פַּח ספריה, הפעל את ./standalone.sh עבור מערכות הפעלה מבוססות לינוקס או ./standalone.bat עבור חלונות.

לאחר מכן, יהיה עליך להוסיף משתמש. משתמש זה ישמש לחיבור לשעועית EJB המרוחקת. כדי לברר כיצד להוסיף משתמש, עליך לעיין בתיעוד 'הוסף משתמש'.

לקבלת הוראות התקנה מפורטות, עיין בתיעוד ההתחלה של WildFly.

הפרויקט POM הוגדר לעבוד עם תוסף המטען ותצורת השרת הידנית על ידי הגדרת שני פרופילים. כברירת מחדל, תוסף המטען נבחר. עם זאת, כדי לפרוס את היישום לשרת Wildfly שהותקן כבר, מוגדר ומריץ, בצע את הפקודה הבאה ב- שלט רחוק מַדרִיך:

mvn נקי להתקין wildfly: לפרוס -Pwildfly-runtime

3. מְרוּחָק לעומת מְקוֹמִי

ממשק עסקי לפול יכול להיות גם מְקוֹמִי אוֹ מְרוּחָק.

א @מְקוֹמִי ניתן לגשת לשעועית המבוארת רק אם היא נמצאת באותו יישום כמו השעועית שעושה את הקריאה, כלומר אם הם שוכנים באותו .אֹזֶן אוֹ .מִלחָמָה.

א @מְרוּחָק ניתן לגשת לשעועית מסומנת מיישום אחר, כלומר ליישום השוכן באחרת JVM או שרת יישומים.

יש לזכור כמה נקודות חשובות בעת תכנון פתרון הכולל EJB:

  • ה java.io ניתן להתבצע באמצעות סריאליזציה, java.io. ניתן להחצנה וממשקים שהוגדרו על ידי javax.ejb חבילה לא נכללת תמיד כאשר מכריזה על שעועית @מְקוֹמִי אוֹ @מְרוּחָק
  • אם מעמד שעועית מרוחק, כל הממשקים המיושמים צריכים להיות מרוחקים
  • אם בכיתה שעועית אין הערה או אם @מְקוֹמִי ההערה מוגדרת, ואז כל הממשקים המיושמים מניחים שהם מקומיים
  • יש להכריז על כל ממשק שמוגדר במפורש עבור שעועית שאינה מכילה ממשק @מְקוֹמִי
  • מהדורת EJB 3.2 נוטה לספק פירוט רב יותר למצבים בהם ממשקים מקומיים ומרוחקים צריכים להיות מוגדרים במפורש

4. יצירת ה- מְרוּחָק EJB

בואו ניצור תחילה את ממשק השעועית ונקרא לזה שלום עולם:

ממשק ציבורי @ מרחוק HelloWorld {String getHelloWorld (); }

כעת ניישם את הממשק הנ"ל ונקרא את היישום הקונקרטי HelloWorldBean:

@Stateless (name = "HelloWorld") מעמד ציבורי HelloWorldBean מיישם את HelloWorld {@Resource ההקשר הפרטי SessionContext; @Override מחרוזת ציבורית getHelloWorld () {return "ברוך הבא ל- EJB Tutorial!"; }}

שים לב ל @ סטטלס ביאור על הצהרת הכיתה. זה מציין כי שעועית זו היא שעועית ללא מדינה. לסוג שעועית זה אין שום מצב לקוח משויך, אך הוא עשוי לשמר את מצב המופע שלו ובדרך כלל משמש לביצוע פעולות עצמאיות.

ה @מַשׁאָב ביאור מזריק את הקשר ההפעלה לשעועית המרוחקת.

ה SessionContext ממשק מספק גישה להקשר של הפעלת זמן ריצה שהמיכל מספק למופע שעועית הפעלה. המכולה עוברת לאחר מכן את SessionContext ממשק למופע לאחר יצירת המופע. הקשר ההפעלה נשאר קשור למופע זה במשך כל חייו.

מיכל ה- EJB יוצר בדרך כלל מאגר של אובייקטים של שעועית חסרת מדינה ומשתמש באובייקטים אלה לעיבוד בקשות לקוח. כתוצאה ממנגנון איגום זה, לא מובטח שיישמרו ערכים משתנים של מופע בכל שיחות שיטת בדיקה.

5. התקנה מרחוק

בחלק זה נדון כיצד להגדיר את Maven לבניית ולהפעלת היישום בשרת.

בואו נסתכל על התוספים אחד אחד.

5.1. תוסף EJB

תוסף EJB המופיע להלן משמש לאריזת מודול EJB. ציינו את גרסת EJB כ- 3.2.

תצורת התוסף הבאה משמשת להגדרת JAR היעד לשעועית:

 תוסף maven-ejb 2.4 3.2 

5.2. פרוס את ה- EJB המרוחק

כדי לפרוס את השעועית בשרת WildFly וודא שהשרת פועל.

ואז כדי לבצע את ההתקנה מרחוק נצטרך להריץ את פקודות Maven הבאות כנגד קובץ ה- pom ב ejb-remote פּרוֹיֶקט:

mvn נקי להתקין 

אז אנחנו צריכים לרוץ:

mvn wildfly: לפרוס

לחלופין, אנו יכולים לפרוס אותו באופן ידני כ- מנהל משתמש ממסוף הניהול של שרת היישומים.

6. הגדרת לקוח

לאחר יצירת השעועית המרוחקת עלינו לבדוק את השעועית הפרוסה על ידי יצירת לקוח.

ראשית, בואו נדון בהתקנת Maven עבור פרויקט הלקוח.

6.1. הגדרת Maven בצד הלקוח

על מנת להפעיל את לקוח EJB3 עלינו להוסיף את התלות הבאה:

 org.wildfly wildfly-ejb-client-bom pom יבוא 

אנו תלויים בממשקים העסקיים המרוחקים של EJB ליישום זה כדי להפעיל את הלקוח. אז עלינו לציין את תלות ה- JAR של לקוח EJB. אנו מוסיפים את הדברים הבאים בפום האב:

 com.baeldung.ejb ejb- מרחוק ejb 

ה מוגדר כ- פליטה.

6.2. גישה לשעועית המרוחקת

עלינו ליצור קובץ תחת src / main / resources ושמו jboss-ejb-client.properties שיכיל את כל המאפיינים הנדרשים לגישה לשעועית הפרושה:

remote.connections = ברירת מחדל remote.connection.default.host = 127.0.0.1 remote.connection.default.port = 8080 remote.connection.default.connect.options.org.xnio.Options .SASL_POLICY_NOANONYMOUS = שקר מרחוק.חיבור.default. connect.options.org.xnio.Options .SASL_POLICY_NOPLAINTEXT = שקר remote.connection.default.connect.options.org.xnio.Options .SASL_DISALLOWED_MECHANISMS = $ {host.auth: JBOSS-LOCAL-USER} remote.connection.def = testUser remote.connection.default.password = admin1234! 

7. יצירת הלקוח

הכיתה שתיגש לשלט ובשימוש בו שלום עולם שעועית נוצרה ב EJBClient.java שנמצא ב com.baeldung.ejb.client חֲבִילָה.

7.1 כתובת אתר שעועית מרוחקת

השעועית המרוחקת ממוקמת באמצעות כתובת URL שתואמת את הפורמט הבא:

ejb: $ {appName} / $ {moduleName} / $ {distinctName} / $ {beanName}! $ {viewClassName}
  • ה $ {appName} הוא שם היישום של הפריסה. כאן לא השתמשנו בשום קובץ EAR אלא בפריסת JAR או WAR פשוטה, ולכן שם היישום יהיה ריק
  • ה $ {moduleName} הוא השם שקבענו לפריסה שלנו קודם לכן, כך הוא ejb-remote
  • ה $ {distinctName} הוא שם ספציפי שניתן להקצות באופן אופציונלי לפריסות הנפרסות על השרת. אם פריסה אינה משתמשת שם מובחן ואז נוכל להשתמש במחרוזת ריקה בשם JNDI, עבור ה- שם מובחן, כפי שעשינו בדוגמה שלנו
  • ה $ {beanName} משתנה הוא השם הפשוט של מחלקת ההטמעה של ה- EJB, כך שבדוגמה שלנו הוא שלום עולם
  • $ {viewClassName} מציין את שם הממשק המוסמך במלואו של הממשק המרוחק

7.2 לוגיקת חיפוש

לאחר מכן, בואו נסתכל על ההיגיון הפשוט שלנו לחיפוש:

חיפוש שלום ציבורי של HelloWorld () זורק את NamingException {String appName = ""; String moduleName = "מרחוק"; מחרוזת distinctName = ""; String beanName = "HelloWorld"; מחרוזת viewClassName = HelloWorld.class.getName (); String toLookup = String.format ("ejb:% s /% s /% s /% s!% S", appName, moduleName, distinctName, beanName, viewClassName); להחזיר (HelloWorld) context.lookup (toLookup); }

על מנת להתחבר ל אפונה זה עתה יצרנו, נצטרך כתובת אתר שנוכל להזין בהקשר.

7.3 ה הקשר ראשוני

כעת ניצור / אתחל את הקשר ההפעלה:

חלל ציבורי createInitialContext () זורק NamingException {מאפיינים prop = מאפיינים חדשים (); prop.put (Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); prop.put (Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFacto [ERROR] prop.put (Context.PROVIDER_URL," http-remoting: //127.0.0.1: 8080 "); prop.put ( Context.SECURITY_PRINCIPAL, "testUser"); prop.put (Context.SECURITY_CREDENTIALS, "admin1234!"); Prop.put ("jboss.naming.client.ejb.context", false); context = new InitialContext (prop); }

כדי להתחבר לשעועית המרוחקת אנו זקוקים להקשר JNDI. מפעל ההקשר מסופק על ידי חפץ Maven org.jboss: jboss-remote-name וזה יוצר הקשר JNDI, שיפתור את כתובת ה- URL שנבנתה ב- הבט מעלה שיטה, לתוך פרוקסי לתהליך שרת היישומים המרוחק.

7.4 הגדר פרמטרים לחיפוש

אנו מגדירים את מחלקת המפעל באמצעות הפרמטר הקשר.INITIAL_CONTEXT_FACTORY.

ה הקשר.URL_PKG_PREFIXES משמש להגדרת חבילה לסריקה להקשר נוסף של שמות.

הפרמטר org.jboss.ejb.client.scoped.context = false אומר להקשר לקרוא את פרמטרי החיבור (כגון מארח החיבור והיציאה) מהמפה שסופקה במקום מקובץ תצורה של classpath. זה מועיל במיוחד אם אנו רוצים ליצור חבילת JAR שאמורה להיות מסוגלת להתחבר למארחים שונים.

הפרמטר הקשר.PROVIDER_URL מגדיר את סכימת החיבור ועליו להתחיל עם http-remoting: //.

8. בדיקות

כדי לבדוק את הפריסה ולבדוק את ההתקנה, אנו יכולים להריץ את הבדיקה הבאה כדי לוודא שהכל עובד כמו שצריך:

@Test מבטל הריק @EJBClient () {EJBClient ejbClient = EJBClient חדש (); שעועית HelloWorldBean = HelloWorldBean חדשה (); assertEquals (bean.getHelloWorld (), ejbClient.getEJBRemoteMessage ()); }

עם תום הבדיקה, כעת אנו יכולים להיות בטוחים שהכל עובד כמצופה.

9. מסקנה

אז יצרנו שרת EJB ולקוח שמפעיל שיטה ב- EJB מרוחק. ניתן להפעיל את הפרויקט בכל שרת יישומים על ידי הוספה נכונה של התלות עבור אותו שרת.

את הפרויקט כולו תוכלו למצוא באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found