- جافا EE SDK؛
- خادم تطبيق Java EE GlassFish؛
- إعداد IntelliJ IDEA.
- أظهر كيف يمكنك إعداد بيئة عمل للعمل مع تطبيقات Java EE.
- أظهر كيف يمكنك نشر وتشغيل تطبيقات Java EE من IntelliJ IDEA على خادم GlassFish.
- قم بتنزيل وتثبيت Java EE 7 SDK.
- دعونا نرفع خادم تطبيق Java EE GlassFish.
- دعونا نتعلم كيفية تشغيل الخادم وإيقافه عبر سطر الأوامر.
- لنقم بتكوين IntelliJ IDEA لنشر التطبيقات على هذا الخادم.
- لنقم بنشر التطبيق التجريبي وتشغيله، والذي تم تضمينه في Java EE 7 SDK مع خادم تطبيق GlassFish.
- جلاس فيش 4.0;
- IntelliJ IDEA 2019.3.1 (النهائي)؛
- جافا إي إس دي كيه 7.
تثبيت جافا EE SDK
شرط مهم. قبل تثبيت Java EE SDK، يجب عليك التأكد من تثبيت Java SE SDK مسبقًا.-
أولاً، نحتاج إلى تنزيل SDK. للقيام بذلك، يمكنك كتابة محرك بحث: "Java EE SDK 7"، أو الانتقال مباشرة إلى صفحة تنزيل sdk من موقع Oracle الإلكتروني.
-
من قائمة أدوات تطوير البرامج (SDKs) المتوفرة، تحتاج إلى تحديد الحزمة المناسبة لنظامك الأساسي. توضح المقالة تثبيت التوزيع: "java_ee_sdk-7-jdk7-windows-x64-ml.exe"
-
قم بتشغيل ملف التثبيت. أثناء بدء التشغيل، قد يحدث الخطأ التالي (إذا لم يحدث، فيمكنك ببساطة متابعة التثبيت):
وهذا يعني أن المثبت لم يتمكن من العثور على المسار إلى Java Runtime Environment المثبتة مسبقًا. يمكن تصحيح الخطأ عن طريق تمرير المسار إلى JRE يدويًا باستخدام سطر الأوامر. للقيام بذلك، تحتاج إلى تشغيل ملف التثبيت عبر PowerShell وتمرير المسار إلى JRE المثبت مسبقًا عبر المعلمة -j.
على سبيل المثال، مثل هذا:
-
يعد إجراء التثبيت الإضافي نموذجيًا تمامًا لمعظم البرامج. كل ما عليك فعله هو النقر على زري التالي والتثبيت.
سيقوم البرنامج بتثبيت Java EE SDK، بالإضافة إلى خادم GlassFish، والذي، عند الانتهاء من التثبيت، سيكون جاهزًا للاستخدام. -
للتأكد من أن خادم GlassFish يعمل، بعد اكتمال التثبيت، يمكنك فتح لوحة إدارة الخادم، والتي ستكون متاحة على: http://localhost:4848/
لقطة الشاشة أدناه:
بدء تشغيل GlassFish وإيقافه عبر سطر الأوامر
إذن، الخادم جاهز للعمل، ولكن تم بدء تشغيل الخادم بواسطة برنامج التثبيت. سنحاول أدناه معرفة كيفية تشغيل الخادم وإيقافه بنفسك. أولاً، دعونا نكشف عن هذا الكيان كمجال. النطاق عبارة عن مجموعة من مثيلات خادم GlassFish واحدة أو أكثر تتم إدارتها بواسطة خادم إدارة واحد. عند تثبيت خادم GlassFish، يتم إنشاء مجال افتراضي - domain1. ترتبط المكونات التالية به:- منفذ الخادم (الافتراضي 8080)؛
- منفذ خادم الإدارة (الافتراضي 4848)؛
- اسم المستخدم وكلمة المرور للمسؤول (الافتراضي هو admin ولا توجد كلمة مرور مطلوبة افتراضيًا).
asadmin start-domain domain_name
asadmin stop-domain domain_name
فلنحاول إيقاف الخادم (نظرًا لأنه يعمل بالفعل بعد التثبيت) عن طريق تشغيل PowerShell من الدليل الفرعي C:\glassfish4\glassfish\bin : تم إيقاف الخادم. الآن دعونا تشغيله:
نحن نحلل أول تطبيق Java EE، Dukes-age
بعد ذلك سنلقي نظرة على تطبيق Java EE التجريبي: dukes-age. تم تضمين هذا التطبيق في Java EE SDK مع تطبيق الكأس الأول. يتم عرض أوصاف هذه التطبيقات على موقع ويب وثائق Oracle الرسمي في القسمين 3 و4 من الدورة التمهيدية حول Java EE لمطوري Java EE المبتدئين . في هذه المقالة، سنلقي نظرة سريعة على تطبيق Dukes-age وسنفحص بمزيد من التفصيل عملية إطلاق هذا التطبيق على خادم GlassFish من بيئة تطوير IntelliJ IDEA. يقع التطبيق داخل دليل خادم glassfish. إذا لم تقم بتغيير المسار الافتراضي لخادم glassfish عند تثبيت Java EE SDK، فيمكنك العثور على هذا التطبيق في المجلد: C:\glassfish4\docs\firstcup\example\dukes-age . من المحتمل أن كل مطور Java، مبتدئًا وذوي خبرة، قد رأى مرة واحدة على الأقل تميمة لغة برمجة Java - Duke: قليل من الناس يعرفون أن Duke لديه عيد ميلاد. ولد في 23 مايو 1995، عندما تم نشر النسخة التجريبية الأولى من تقنية Java. يوفر تطبيق Dukes-age، كما يوحي الاسم، معلومات حول عمر Duke. لنفتح هذا التطبيق في IntelliJ IDEA: ملف -> جديد -> مشروع من مصادر موجودة... ثم انتقل إلى المجلد الذي يحتوي على تطبيق dukes-age، الموجود افتراضيًا في C:\glassfish4\docs\firstcup\example\dukes- age ، حدد الملف pom.xml وانقر فوق OK: سيتم فتح تطبيق بالبنية التالية: دعنا نلقي نظرة على رمز الفصلDukesAgeResource
:
package firstcup.dukesage.resource;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
/**
* REST Web Service
*
*/
@Path("dukesAge")
public class DukesAgeResource {
/** Creates a new instance of DukesAgeResource */
public DukesAgeResource() {
}
/**
* Retrieves representation of an instance of DukesAgeResource
* @return an instance of java.lang.String
*/
@GET
@Produces("text/plain")
public String getText() {
// Create a new Calendar for Duke's birthday
Calendar dukesBirthday = new GregorianCalendar(1995, Calendar.MAY, 23);
// Create a new Calendar for today
Calendar now = GregorianCalendar.getInstance();
// Subtract today's year from Duke's birth year, 1995
int dukesAge = now.get(Calendar.YEAR) - dukesBirthday.get(Calendar.YEAR);
dukesBirthday.add(Calendar.YEAR, dukesAge);
// If today's date is before May 23, subtract a year from Duke's age
if (now.before(dukesBirthday)) {
dukesAge--;
}
// Return a String representation of Duke's age
return "" + dukesAge;
}
}
هذه خدمة ويب JAX-RS RESTful ذات طريقة واحدة - getText()
. إذا قمت بفحص كود هذه الطريقة، يصبح من الواضح أن الطريقة ترجع عدد السنوات التي مرت منذ ولادة ديوك. أي أن الطريقة ترجع عمر ديوك. الفصل هو مورد في سياق REST.
- يحدد التعليق التوضيحي الموجود أعلى الفئة
@Path("dukesAge")
مسار URI الذي ستتم معالجة الاستدعاءات إليه بواسطة هذه الفئة. @GET
يخبرنا التعليق التوضيحي الموجود أعلى الطريقة أن هذه الطريقة تعالج طلبات GET.- يحدد التعليق التوضيحي
@Produces("text/plain")
نوع الوسائط للاستجابة للطلب. ليس من الصعب تخمين أن الطريقةgetText()
ستولد استجابات بنوع الوسائط: نص/عادي.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>
في هذا الملف، داخل العلامة servlet-mapping
، يتم تعريف علامة url-pattern
ذات قيمة /webapi/*
. يتم هنا تحديد نقطة جذر معينة، والتي ستتم معالجة المكالمات إليها بشكل أكبر بواسطة الخدمة. إذا تم دمجه مع التعليق التوضيحي @Path("dukesAge")
، فسيتبين أنه للحصول على معلومات حول عمر ديوك، يجب عليك الاتصال بالعنوان /webapi/dukesAge.
إعداد IntelliJ IDEA لتشغيل تطبيق Java EE على خادم GlassFish
الآن بعد أن أصبح لدينا فكرة عامة جدًا عن تطبيق Dukes-age (اقرأ المزيد عنه على موقع Oracle )، فلنقم بتكوين IntelliJ IDEA حتى نتمكن من تشغيل هذا التطبيق من IDE الخاص بنا. إعداد IntelliJ IDEA- للقيام بذلك، انتقل إلى القائمة تشغيل -> تحرير التكوينات.
- سيتم فتح لوحة تكوينات التشغيل/التصحيح:
- نحن بحاجة إلى إضافة تكوين جديد. للقيام بذلك، انقر فوق علامة الزائد، أو استخدم مفتاح التشغيل السريع Alt+Insert. في القائمة التي تفتح، حدد خادم GlassFish -> محلي:
- في النافذة التي تفتح، لنبدأ في إعداد التكوين:
- الخطوة التالية هي الإشارة إلى العناصر التي يجب نشرها على الخادم. يمكن القيام بذلك من خلال علامة التبويب "النشر" بالنقر فوق علامة الجمع -> قطعة أثرية...
- حدد Dukes-age:war وانقر فوق "موافق":
- بعد ذلك، احفظ التكوين الخاص بنا من خلال النقر على "تطبيق" ثم "موافق".
إطلاق التطبيق
الآن دعونا نحاول تشغيل التطبيق.-
للقيام بذلك، يمكنك استخدام مفتاح التشغيل السريع Alt+Shift+F10، أو من خلال القائمة تشغيل -> تشغيل...
وحدد تكوين Dukes-age الذي أنشأناه:
-
بعد ذلك نرى سجلات بدء التشغيل في لوحة الخدمات:
-
بعد ذلك، إذا تم كل شيء وفقًا للتعليمات، فسيتم فتح المتصفح وسيصبح من الواضح أنه لا يوجد شيء يعمل:
-
للقيام بذلك، دعنا نعود إلى IntelliJ IDEA، ثم إلى القائمة: تشغيل -> تحرير التكوينات...
-
دعنا نحدد التكوين المحفوظ مسبقًا ونقوم بتحديث عنوان URL وفقًا للقطة الشاشة أدناه:
-
فلنحفظ التكوين ونعيد تشغيل تطبيقنا باستخدام مفتاح التشغيل السريع Ctrl+Shift+F10، أو باستخدام زر خاص في لوحة الخدمات:
-
بعد إعادة التشغيل، إذا تم كل شيء بشكل صحيح، فسنرى عمر ديوك:
خاتمة
في هذه المقالة، نظرنا في كيفية تكوين بيئتك المحلية للعمل مع تطبيقات Java EE باستخدام مثال خادم GlassFish 4.0 وبيئة تطوير IntelliJ IDEA 2019.3.1 (Ultimate) والإصدار 7 من Java EE SDK. في كيف يمكنك:- تنزيل وتثبيت Java EE SDK، بالإضافة إلى خادم GlassFish؛
- إيقاف وتشغيل خادم GlassFish عبر PowerShell؛
- قم بتكوين IntelliJ IDEA بحيث يمكنك نشر تطبيقات Java EE من IDE إلى خادم GlassFish وتشغيلها على الفور.
مهمة المكافأة
- كرر جميع الخطوات الموضحة بنفسك.
- احصل على دورة تمهيدية حول Java EE لمطوري Java EE المبتدئين من Oracle .
- العنصر الذي يحمل علامة النجمة. حاول نشر التطبيق التجريبي الثاني للكأس الأولى بنفسك. هذا التطبيق أكثر تفاعلية ويتفاعل أيضًا مع تطبيق Dukes-age. لإكمال هذه الخطوة، ستحتاج إلى فهم الأسئلة التالية بشكل مستقل:
- كيفية تفعيل قاعدة البيانات داخل خادم glassFish؛
- كيفية دمج تطبيقين مع بعضهما البعض (يشير داخل الكأس الأول إلى المسار المؤدي إلى نقطة نهاية عصر الدوقات، والتي ناقشناها في هذه المقالة)؛
- كيفية إنشاء تكوين جديد في Intellij IDEA لنشر الكأس الأولى (على غرار ما تم عرضه في هذه المقالة)؛
- وربما أسئلة أخرى كثيرة)
GO TO FULL VERSION