Penulis: Zhu Xianzhong Sumber penyusun: Tianji.com
Abstrak Artikel ini akan memperkenalkan cara mewujudkan interaksi antara aplikasi ASP.NET dan server aplikasi J2EE dan cara membuat panggilan EJB semudah memanggil layanan Web XML.
Pendahuluan
Saat ini, banyak organisasi besar mempunyai dan menggunakan tim pengembangan dan server penerbitan yang merupakan campuran teknologi .NET dan J2EE. Untuk menyeimbangkan kualitas perusahaan yang dikirim melalui server aplikasi J2EE, logika bisnis perusahaan sering dipublikasikan di server aplikasi J2EE dalam bentuk enterprise JavaBeans (EJB). Di sisi lain, untuk memenuhi persyaratan pengembangan bisnis yang terus berubah, sebagian besar pengembang lebih memilih untuk mengimplementasikan logika deskripsi di lingkungan pengembangan Visual Studio.NET dengan kinerja produksi tinggi. Tantangan muncul ketika Anda perlu menghubungkan lapisan presentasi .NET ke lapisan logika bisnis J2EE.
Mari kita lihat bagaimana Visual MainWin untuk J2EE dapat membantu Anda menghadapi dan mengatasinya - dari Visual Studio.NET, gunakan C# atau Visual Basic.NET untuk mengimplementasikan lapisan deskripsi ASP.NET dan kemudian memanggil lapisan logika bisnis yang diimplementasikan dalam bentuk EJB - ini Menantang untuk dikembangkan. Yakinlah, Anda tidak perlu mengotak-atik pengkodean EJB API untuk melakukan ini. Dengan Visual MainWin untuk J2EE, kedua lapisan - front-end ASP.NET dan back-end EJB - dapat dijalankan sebagai aplikasi J2EE murni di server aplikasi J2EE Anda, dengan optimalisasi kinerja dan keamanan berbasis J2EE yang konsisten.
Untuk memanggil EJB dari Visual Studio .NET, Anda harus menginstal Visual MainWin untuk J2EE versi perusahaan. Tentu saja, Anda dapat mengunduh versi evaluasinya dari situs mainsoft.com untuk analisis eksperimental.
Contoh Analisis
Contoh StocksPortfolio artikel ini - yang menunjukkan kepada Anda cara membuat aplikasi menggunakan lapisan Web ASP.NET dan lapisan bisnis J2EE - diinstal dan didokumentasikan dalam Visual MainWin untuk J2EE. Contoh ini mengimplementasikan halaman web ASP.NET sederhana - yang digunakan oleh pengguna untuk mengelola investasi saham mereka - dan layanan Web ASP.NET - yang digunakan untuk menyediakan harga saham fiktif. Contoh ini juga menggunakan sesi EJB - digunakan oleh server aplikasi J2EE Anda untuk mengimplementasikan logika pembelian dan penjualan saham.
Gambar 1. Aplikasi StocksPortfolio berjalan di server aplikasi JBoss
Tambahkan EJB ke lingkungan .NET Anda
Memanggil EJB dari Visual Studio.NET semudah memanggil layanan Web. Di Solution Explorer Anda, klik kanan "Referensi" dan pilih "Tambahkan Referensi EJB". Jenis referensi baru akan muncul yang hanya dapat digunakan dalam proyek Visual MainWin untuk J2EE, yang sangat mirip dengan referensi Visual Studio standar di bawah NETIDE (lihat Gambar 2).
Gambar 2. Menambahkan referensi EJB
Untuk menambahkan referensi EJB ke proyek Visual MainWin untuk J2EE, Anda hanya memerlukan file arsip Java (JAR) - file yang mengimplementasikan EJB atau berisi antarmuka lokal dan jarak jauhnya. Visual MainWin dapat menanyakan server aplikasi untuk informasi tentang semua EJB yang dipublikasikan di dalamnya dan menampilkan EJB yang sesuai dengan definisi JAR Anda di kotak dialog. Anda hanya perlu memilih EJB tertentu (mungkin beberapa) yang ingin Anda gunakan (lihat Gambar 3).
Gambar 3. Kotak dialog Tambahkan Referensi EJB
Anda juga dapat menggunakan EJB di server aplikasi jarak jauh, asalkan jenisnya sama dengan server aplikasi lokal yang terkait dengan proyek Anda. Ini bisa berupa server Windows, Linux, Unix, Mainframe atau server lain yang mendukung J2EE. Untuk menggunakan EJB yang dipublikasikan di server jauh, klik "Lanjutan" untuk memperluas kotak dialog (lihat Gambar 4).
Gambar 4. Kotak dialog Tambahkan Referensi EJB mode lanjutan
Masukkan URL JNDI ke server aplikasi J2EE jarak jauh dan klik "Ambil Dari Server". Visual MainWin akan mencantumkan semua EJB yang dipublikasikan di server jarak jauh dan EJB yang sesuai dengan file JAR Anda. Operasi ini konsisten dengan EJB lokal.
Pilih EJB yang ingin dikonsumsi (mungkin ada beberapa) dan klik OK. Folder referensi EJB baru dibuat di browser Solution Explorer Anda, seperti yang ditunjukkan pada Gambar 5. Folder ini berisi referensi berbasis server untuk setiap referensi EJB yang baru ditambahkan, mirip dengan node referensi Web. Selain itu, kelas wrapper dibuat untuk menyederhanakan pengkodean panggilan EJB Anda. Kita akan membahas kelas wrapper ini di bagian selanjutnya.
Gambar 5. Folder Solution Explorer menampilkan referensi EJB
Memanggil metode EJB dari .NET
Saat Anda menambahkan referensi EJB ke proyek Anda, sistem akan secara otomatis menghasilkan kelas .NET (C# atau VB.NET). Ini menjelaskan antarmuka sederhana ke EJB . Kelas ini mencakup pengkodean J2EE yang diperlukan untuk membuat EJB dan memanggil metodenya. Kelas .NET ini memaparkan metode antarmuka jarak jauh EJB melalui metode publiknya sendiri. Untuk memanggil metode bisnis EJB Anda, Anda cukup membuat instance kelas wrapper dan memanggil metode kelas wrapper yang sesuai.
Berikut adalah contoh kode untuk memanggil metode EJB dari proyek .NET Anda:
//Buat sebuah instance dari StockTrader EJB.
localhost.StockTraderEJB trader = localhost.StockTraderEJB();
//Beli saham yang ditentukan oleh pengguna di kotak teks nama saham,
//Jumlah saham yang dibeli sesuai dengan nomor di kotak teks jumlah saham
trader.buy(tbStockName.Text, Int32.Parse(tbNumOfShares.Text));
Analisis mendalam
mengeksekusi panggilan J2EE yang diminta dalam konstruktor statis kelas wrapper yang dihasilkan di atas untuk membuat objek home EJB. Kemudian, dalam konstruktor default, ia menggunakan objek home untuk membuat objek EJB. Objek EJB disimpan sebagai anggota kelas pembungkus yang melaluinya metode bisnis EJB dipanggil.
Berikut ini adalah bagian dari kode untuk membuat kelas pembungkus StockTrader EJB:
private static trading.StockTraderHome home;
perdagangan pribadi.StockTraderEJB ejbObj;
StockTraderEJB() {
// Buat konteks Penamaan Java (JNDI).
konteks konteks;
konteks = vmw.j2ee.J2EEUtils.CreateContext(null, null);
objek rumahObj;
//Dapatkan objek home dari server JNDI
homeObj = konteks.lookup("ejb/StockTrader");
rumah = ((trading.StockTraderHome)(homeObj));
}
//Konstruktor default: Buat instance EJB baru
Pedagang Saham publikEJB() {
this.ejbObj = home.create();
}
Kelas wrapper ini memaparkan metode antarmuka jarak jauh EJB melalui metode publiknya. Masing-masing metode ini kemudian memanggil metode bisnis EJB Anda yang sesuai melalui objek EJB. Kode berikut menunjukkan metode pedagang saham di pembungkus EJB:
public virtual void buy(string arg_0, int arg_1) {
this.ejbObj.beli(arg_0, arg_1);
}
penjualan kekosongan virtual publik(string arg_0, int arg_1) {
this.ejbObj.sell(arg_0, arg_1);
}
Visual MainWin juga bertanggung jawab untuk memetakan tipe data antara Java dan .NET. Misalnya, jika salah satu metode EJB Anda menerima objek java.lang.calendar sebagai parameter, maka Anda akan memanggil metode tersebut dengan parameter objek .NET System.DateTime dan memetakannya ke java.lang pada objek kalender. Selanjutnya, jika metode EJB Anda mengembalikan kelas java.lang., Anda akan menerima objek System.Type sebagai gantinya.
Masalah Debugging
Meskipun Visual MainWin menyederhanakan pengembangan, Anda mungkin masih perlu men-debug aplikasi ASP.NET/EJB campuran multi-level Anda. Debugger Visual MainWin memungkinkan Anda men-debug aplikasi hibrid Anda dari dalam Visual Studio .NET IDE. Anda dapat mengatur interupsi dalam kode C# atau VB.NET, masuk ke kode Java EJB, dan men-debug seluruh aplikasi melintasi batas bahasa. Dan, karena debugging harus ada di mana pun masalah terjadi, debugger Visual MainWin dapat dilampirkan ke server aplikasi J2EE Anda, terlepas dari apakah itu berjalan di Linux, Unix atau kerangka kerja lainnya, asalkan dapat berjalan di debugger. polanya.
Gambar 6. Menggunakan debugger Visual MainWin untuk men-debug kode sumber EJB
Aplikasi yang dibuat Visual MainWin untuk Anda adalah aplikasi servlet J2EE standar - dapat diterbitkan dan dikelola melalui Konsol Manajer Server Aplikasi J2EE, sama seperti J2EE lainnya Sama seperti servlet aplikasi. Oleh karena itu, lapisan presentasi ASP.NET dan lapisan logika bisnis EJB Anda dapat mengandalkan infrastruktur keamanan J2EE yang sama. Aplikasi ASP.NET/EJB hibrid Anda dapat mengandalkan model keamanan yang konsisten melalui penggunaan otentikasi servlet J2EE, dan pengguna server aplikasi serta definisi peran Anda dapat memastikan keamanan dengan menyeimbangkan mekanisme otorisasi berbasis peran.
Ringkasan
1. Artikel ini membahas objek dan antarmuka jarak jauh. Konsumsi objek lokal melalui Visual MainWin juga dimungkinkan. Untuk mendistribusikan aplikasi yang menggunakan objek asli, Anda harus membuat file arsip perusahaan (EAR) - yang berisi file WAR aplikasi Anda dan file JAR EJB lokal.
2. Meskipun Visual MainWin dapat memetakan sebagian besar tipe .NET ke tipe Java, Visual MainWin tidak dapat memetakan tipe kumpulan - karena pemetaan ini dapat menyebabkan penalti kinerja. Oleh karena itu, Anda dapat memilih untuk menangani jenis koleksi Java dari kode .NET Anda atau melakukan konversi tersebut sendiri.
3. Visual MainWin memungkinkan Anda menggunakan kacang sesi dan kacang entitas non-transaksional. Kacang entitas transaksional tidak dapat digunakan secara transparan, jadi Anda harus mengkodekan panggilan transaksi J2EE secara manual. Namun, dalam kebanyakan kasus, kacang entitas transaksional dapat diakses melalui kacang sesi, jadi Anda mungkin tidak perlu melakukan hal ini.