Panduan pemula untuk Enterprise JavaBeans

Enterprise JavaBeans (EJB) telah menghasilkan banyak kegembiraan sejak pengumuman bulan Mac 1998 mengenai Spesifikasi Enterprise JavaBeans Versi 1.0. Syarikat-syarikat seperti Oracle, Borland, Tandem, Symantec, Sybase, dan Visigenic, antara lain, telah mengumumkan dan / atau menyampaikan produk yang mematuhi spesifikasi EJB. Bulan ini, kita akan melihat apa sebenarnya Enterprise JavaBeans. Kami akan membincangkan bagaimana EJB berbeza dengan model komponen JavaBeans yang asal, dan membincangkan mengapa EJB telah menghasilkan minat yang begitu besar.

Tetapi pertama, nasihat: kami tidak akan melihat kod sumber atau topik panduan bulan ini. Artikel ini bukan tutorial; sebaliknya ia adalah gambaran keseluruhan seni bina. EJB merangkumi banyak wilayah, dan tanpa terlebih dahulu memahami konsep asas yang terlibat, coretan kod dan helah pengaturcaraan tidak bermakna. Sekiranya ada minat dari pembaca JavaWorld , artikel mendatang mungkin mencakup spesifik penggunaan Enterprise JavaBeans API untuk membuat Enterprise JavaBeans anda sendiri.

Untuk memahami mengapa EJB begitu menarik bagi pembangun, kami memerlukan beberapa latar belakang sejarah. Pertama, kita akan melihat sejarah sistem pelanggan / pelayan, dan keadaan semasa. Kemudian, kita akan membincangkan pelbagai bahagian sistem EJB: komponen EJB - yang hidup di dalam bekas EJB yang berjalan di dalam pelayan EJB - dan objek EJB, yang digunakan pelanggan sebagai sejenis "kawalan jauh" komponen EJB . Kami akan membahas dua jenis EJB: objek sesi dan entiti . Anda juga akan membaca mengenai rumah dan jarak jauhantaramuka, yang membuat instance EJB dan memberikan akses kepada kaedah perniagaan EJB, masing-masing. Pada akhir artikel, anda akan mempunyai idea tentang bagaimana pelayan yang dapat diperluas dapat dibuat menggunakan Enterprise JavaBeans. Tetapi pertama, melihat kembali masa.

Sejarah pelanggan / pelayan

Sejarah purba

Pada mulanya, terdapat komputer kerangka utama. Dan itu bagus. (Atau sebaik yang ada, bagaimanapun.) Keadaan canggih dalam pemprosesan maklumat hingga tahun 1960-an terdiri terutamanya dari mesin besar dan mahal yang digunakan oleh organisasi besar untuk menyokong operasi perniagaan harian mereka. Minikomputer dan perkongsian masa pada tahun 1970-an meningkatkan aksesibilitas kuasa pengkomputeran, tetapi maklumat dan pemprosesan masih terpusat pada mesin individu. Komputer peribadi pertama pada tahun 1980-an dengan cepat memenuhi lanskap korporat dengan ribuan pulau kecil maklumat, semuanya tanpa lelah mengeluarkan laporan kualiti berubah-ubah, kehilangan data kritikal ketika mereka jatuh, dan dengan cepat menjadi tidak konsisten antara satu sama lain.

Pelanggan / pelayan untuk menyelamatkan

Senibina pelanggan / pelayan adalah salah satu penyelesaian yang paling biasa untuk teka-teki bagaimana menangani keperluan untuk kawalan data terpusat dan kebolehcapaian data yang meluas. Dalam sistem pelanggan / pelayan, maklumat disimpan secara relatif terpusat (atau dipartisi dan / atau ditiru di antara pelayan yang diedarkan), yang memudahkan kawalan dan konsistensi data, sambil tetap memberikan akses ke data yang diperlukan pengguna.

Sistem pelayan pelanggan kini biasanya terdiri daripada pelbagai peringkat. Sistem mainframe lama atau timesharing lama, di mana antara muka pengguna berjalan pada komputer yang sama dengan pangkalan data dan aplikasi perniagaan, dikenali sebagai satu peringkat. Sistem sedemikian agak mudah dikendalikan, dan konsistensi data mudah dilakukan kerana data disimpan di satu tempat sahaja. Malangnya, sistem satu peringkat mempunyai skalabiliti yang terhad dan rentan terhadap bahaya ketersediaan (jika satu komputer tergendala, seluruh perniagaan anda tergendala), terutama jika komunikasi terlibat.

Sistem pelanggan / pelayan pertama adalah dua peringkat, di mana antara muka pengguna berjalan pada klien, dan pangkalan data tinggal di pelayan. Sistem seperti itu masih biasa. Satu jenis pelayan jenis dua jenis taman menjalankan sebahagian besar logik perniagaan pada pelanggan, mengemas kini data bersama dengan menghantar aliran SQL ke pelayan. Ini adalah penyelesaian yang fleksibel, kerana percakapan pelanggan / pelayan berlaku pada tahap bahasa pangkalan data pelayan. Dalam sistem seperti itu, klien yang dirancang dengan baik dapat diubah untuk mencerminkan peraturan dan syarat perniagaan baru tanpa mengubah pelayan, selagi pelayan mempunyai akses ke skema pangkalan data (jadual, pandangan, dan sebagainya) yang diperlukan untuk melakukan transaksi. Pelayan dalam sistem dua peringkat disebut pelayan pangkalan data, seperti yang ditunjukkan di bawah.

Pelayan pangkalan data mempunyai beberapa tanggungjawab. Selalunya SQL untuk fungsi perniagaan tertentu (misalnya, menambahkan item ke pesanan) sama, kecuali data yang dikemas kini atau dimasukkan, dari panggilan ke panggilan. Pelayan pangkalan data akhirnya menghurai dan menggunakan semula SQL yang hampir sama untuk setiap fungsi perniagaan. Sebagai contoh, semua pernyataan SQL untuk menambahkan item ke pesanan mungkin sangat serupa, seperti pernyataan SQL untuk mencari pelanggan dalam pangkalan data. Masa yang dihuraikan ini akan lebih baik dihabiskan untuk memproses data. (Ada penyelesaian untuk masalah ini, termasuk cache parse SQL dan prosedur yang tersimpan.) Masalah lain yang timbul adalah memformat klien dan pangkalan data pada masa yang sama: semua mesin mesti dimatikan untuk peningkatan,dan pelanggan atau pelayan yang ketinggalan dalam versi perisian mereka biasanya tidak dapat digunakan sehingga mereka ditingkatkan.

Pelayan aplikasi

An pelayan aplikasi seni bina (lihat imej seterusnya) adalah alternatif yang popular kepada seni bina pelayan pangkalan data kerana ia menyelesaikan beberapa masalah pelayan pangkalan data mempunyai.

Persekitaran pelayan pangkalan data biasanya melaksanakan kaedah perniagaan pada pelanggan, dan menggunakan pelayan kebanyakannya untuk kegigihan dan pengukuhan integriti data. Dalam pelayan aplikasi, kaedah perniagaan dijalankan di pelayan, dan klien meminta agar pelayan menjalankan kaedah ini. Dalam senario ini, pelanggan dan pelayan biasanya akan menggunakan protokol yang mewakili perbualan pada tahap urus niaga perniagaan, bukannya pada tahap jadual dan baris. Pelayan aplikasi seperti itu sering berkinerja lebih baik daripada rakan pangkalan data mereka, tetapi mereka masih mengalami masalah versi.

Kedua-dua sistem pangkalan data dan aplikasi dapat ditingkatkan dengan menambahkan tahap tambahan pada seni bina. Sistem tiga peringkat yang disebut meletakkan komponen perantaraan antara pelanggan dan pelayan. Seluruh industri - middleware - telah berkembang untuk menangani liabiliti sistem dua peringkat. A monitor transaksi pemprosesan,satu jenis middleware, menerima aliran permintaan dari banyak klien, dan dapat menyeimbangkan beban antara beberapa pelayan, memberikan failover ketika server gagal, dan mengurus transaksi atas nama klien. Jenis perisian menengah lain menyediakan terjemahan protokol komunikasi, menggabungkan permintaan dan tindak balas antara pelanggan dan pelayan heterogen berganda (ini sangat popular dalam menangani sistem warisan dalam proses semula proses perniagaan), dan / atau memberikan pemeteran perkhidmatan dan maklumat lalu lintas rangkaian.

Pelbagai peringkat memberikan fleksibiliti dan interoperabilitas yang menghasilkan sistem dengan lebih daripada tiga lapisan perkhidmatan ini. Sebagai contoh, sistem n-tier adalah generalisasi sistem tiga peringkat, setiap lapisan perisian memberikan tahap perkhidmatan yang berbeza dengan lapisan di atas dan di bawahnya. Perspektif n-tier menganggap rangkaian sebagai kumpulan perkhidmatan yang diedarkan, dan bukan sekadar kaedah untuk pelanggan mengakses satu pelayan.

Oleh kerana bahasa dan teknik berorientasikan objek telah menjadi mode, begitu juga sistem pelanggan / pelayan semakin bergerak ke arah orientasi objek. CORBA (Common Object Request Broker Architecture) adalah seni bina yang membolehkan objek dalam aplikasi - bahkan objek yang ditulis dalam bahasa yang berbeza - berjalan pada mesin yang berasingan, bergantung pada keperluan aplikasi tertentu. Aplikasi yang ditulis bertahun-tahun yang lalu dapat dikemas sebagai perkhidmatan CORBA dan bekerjasama dengan sistem baru. Enterprise JavaBeans, yang dirancang agar serasi dengan CORBA, merupakan entri lain ke dalam cincin pelayan aplikasi berorientasi objek.

Tujuan artikel ini bukan untuk memberikan tutorial tentang sistem klien / pelayan, tetapi perlu memberikan beberapa latar belakang untuk menentukan konteks. Sekarang mari kita lihat apa yang ditawarkan EJB.

Enterprise JavaBeans dan pelayan aplikasi yang boleh diperluas

Sekarang kita telah melihat sedikit sejarah dan memahami apa itu pelayan aplikasi, mari kita lihat Enterprise JavaBeans dan melihat apa yang ditawarkannya dalam konteks tersebut.

Idea asas di sebalik Enterprise JavaBeans adalah menyediakan kerangka kerja untuk komponen yang mungkin "terpasang" ke pelayan, sehingga memperluas fungsi pelayan tersebut. Enterprise JavaBeans mirip dengan JavaBeans yang asli hanya kerana ia menggunakan beberapa konsep yang serupa. Teknologi EJB diatur bukan oleh Spesifikasi Komponen JavaBeans, tetapi oleh Spesifikasi JavaBeans Enterprise yang sama sekali berbeza (dan besar-besaran) . (Lihat Sumber untuk perincian mengenai spesifikasi ini.) Spesifikasi EJB memanggil pelbagai pemain dalam sistem pelanggan / pelayan EJB, menerangkan bagaimana EJB saling beroperasi dengan pelanggan dan dengan sistem yang ada, menjelaskan keserasian EJB dengan CORBA, dan menentukan tanggungjawab untuk pelbagai komponen dalam sistem.

Matlamat Enterprise JavaBeans

The EJB Spec cuba untuk memenuhi beberapa gol sekali gus:

  • EJB direka untuk memudahkan pembangun membuat aplikasi, membebaskannya dari perincian sistem tahap rendah yang menguruskan transaksi, utas, pengimbangan beban, dan sebagainya. Pembangun aplikasi dapat menumpukan perhatian pada logik perniagaan dan memberikan perincian menguruskan pemprosesan data ke kerangka kerja. Walau bagaimanapun, untuk aplikasi khusus, selalu mungkin untuk mendapatkan "di bawah tenda" dan menyesuaikan perkhidmatan peringkat rendah ini.

  • The EJB Spec mentakrifkan struktur utama rangka kerja EJB, dan kemudian secara khusus mentakrifkan kontrak di antara mereka. Tanggungjawab pelanggan, pelayan, dan komponen masing-masing dinyatakan dengan jelas. (Kami akan membahas struktur ini sebentar lagi.) Pembangun yang membuat komponen Enterprise JavaBean mempunyai peranan yang sangat berbeza dari seseorang yang membuat pelayan yang mematuhi EJB, dan spesifikasi menerangkan tanggungjawab masing-masing.

  • EJB bertujuan untuk menjadi cara standard untuk aplikasi klien / pelayan dibangun dalam bahasa Java. Sama seperti JavaBeans asli (atau komponen Delphi, atau apa sahaja) dari vendor yang berbeza dapat digabungkan untuk menghasilkan pelanggan tersuai, komponen pelayan EJB dari vendor yang berbeza dapat digabungkan untuk menghasilkan pelayan tersuai. Komponen EJB, yang merupakan kelas Java, tentu akan dijalankan di mana-mana pelayan yang mematuhi EJB tanpa penyusunan semula. Inilah faedah yang tidak dapat ditawarkan oleh penyelesaian khusus platform.

  • Akhirnya, EJB serasi dengan dan menggunakan Java API lain, dapat beroperasi dengan aplikasi bukan Java, dan serasi dengan CORBA.

Bagaimana sistem pelanggan / pelayan EJB berfungsi

Untuk memahami bagaimana sistem pelanggan / pelayan EJB beroperasi, kita perlu memahami bahagian asas sistem EJB: komponen EJB, bekas EJB, dan objek EJB.

Komponen Enterprise JavaBeans

JavaBean Enterprise adalah komponen, seperti JavaBean tradisional. Enterprise JavaBeans dijalankan dalam wadah EJB, yang seterusnya dijalankan dalam pelayan EJB. Mana-mana pelayan yang dapat menghoskan wadah EJB dan menyediakan perkhidmatan yang diperlukan boleh menjadi pelayan EJB. (Ini bermaksud bahawa banyak pelayan yang ada dapat diperluas menjadi pelayan EJB, dan sebenarnya banyak vendor telah mencapai ini, atau telah mengumumkan niat untuk melakukannya.)

Komponen EJB adalah jenis kelas EJB yang kemungkinan besar dianggap sebagai "Enterprise JavaBean." Ini adalah kelas Java, yang ditulis oleh pemaju EJB, yang menerapkan logik perniagaan. Semua kelas lain dalam sistem EJB sama ada menyokong akses pelanggan ke atau menyediakan perkhidmatan (seperti kegigihan, dan sebagainya) ke kelas komponen EJB.

Wadah Enterprise JavaBeans

Bekas EJB adalah tempat komponen EJB "hidup." Wadah EJB menyediakan perkhidmatan seperti urus niaga dan pengurusan sumber, versi, skalabilitas, mobiliti, kegigihan, dan keselamatan ke komponen EJB yang terkandung di dalamnya. Oleh kerana kontena EJB mengendalikan semua fungsi ini, pemaju komponen EJB dapat menumpukan perhatian pada peraturan perniagaan, dan menyerahkan manipulasi pangkalan data dan perincian lain yang serupa ke wadah. Sebagai contoh, jika satu komponen EJB memutuskan bahawa transaksi semasa harus dibatalkan, ia hanya memberitahu wadahnya (dengan cara yang ditentukan oleh EJB Spec, dan wadah itu bertanggungjawab untuk melakukan semua rollback, atau melakukan apa sahaja yang diperlukan untuk membatalkan transaksi sedang dijalankan. Beberapa contoh komponen EJB biasanya wujud di dalam satu bekas EJB.

Objek EJB dan antara muka jauh

Program pelanggan melaksanakan kaedah pada EJB jarak jauh dengan menggunakan objek EJB. Objek EJB mengimplementasikan "jarak antara muka" komponen EJB pada pelayan. Antaramuka jarak jauh mewakili kaedah "perniagaan" komponen EJB. Antara muka jarak jauh melakukan kerja sebenar dan berguna dari objek EJB, seperti membuat borang pesanan atau menangguhkan pesakit kepada pakar. Kami akan membincangkan antara muka jarak jauh dengan lebih terperinci di bawah.