Tuesday, May 28, 2013

Pembuatan SOA Application (BPEL, JMS Adapter dan File Adapter) Part 1

Pada blog ini saya akan sharing program simple SOA Application menggunakan Component WebService (yang kita define sendiri), BPEL (Business Process Execution Language), JMS Adapter dan File Adapter.
Berikut step by step pembuatannya:
  • Buka JDeveloper, kemudian buat new application, pilih Generic Application. Klik next 
  • Pilih SOA, kemudian isi nama projectnya dan next untuk melanjutkan, setelah itu pilih empty composite dan  finish.
  • Setelah selesai, pertama kita buat terlebih dahulu schema xml (XSD) yang nantinya digunakan untuk membuat webservice. 
<?xml version= '1.0' encoding= 'UTF-8' ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:p1="http://xmlns.oracle.com/ns/inputType"
     targetNamespace="http://xmlns.oracle.com/ns/inputType" elementFormDefault="qualified">
    <element name="inputFirst" type="p1:inputFirstType"/>
    <complexType name="inputFirstType">
        <sequence>
            <element name="first_name" type="string"/>
            <element name="mid_name" type="string"/>
            <element name="last_name" type="string"/>
        </sequence>
    </complexType>
</schema>


  • Drag web service dari component pallete ke exposed service (ini digunakan sebagai inputan)
  • Keluarkotak dialog webservice, isi nama web service name dengan "input", kemudian klik button Generate WSDL from schema. Keluar kotak dialog Create WSDL, pilih interface type dengan "Synchronous Interface".


  • Klik "+" di bagian input, kemudian keluar kotak message Part, di sini isi part name dengan "input", dan di bagian URL klik tombol search, lalu keluar kotak dialog search, cari schema xsd yang kita buat sebelumnya. Pilih "inputFirst" dan klik ok, dan  di kotak dialog message part klik ok.

  • Lakukan hal yang sama di bagian output, isi nama message part dengan "output" dan pilih schema xsd sama seperti bagian Input.



  • Kembali ke kotak dialog web service, check "Copy wsdl and its dependent artifact into projects" dan klik ok. 
  • Next drag component mediator ke bagian component SOA Application, keluar kotak dialog mediator, klik OK


  • Drag component BPEL Process ke bagian Component, setelah itu keluar kotak dialog BPEL Process, di bagian input dan output klik search, kemudian cari schema input.xsd (pilih inputFirst) kemudian klik Ok. 
  • Drag JMS Adapter ke external references. Klik next setelah keluar kotak dialog JMS Adapter.
  • Isi nama JMS Adapter yang kita buat kemudian next.
  • Pilih Oracle Weblogic JMS (untuk Oracle Enterprise Messaging Services (OEMS)). Kemudian next.


  • Pilih Connection Server Weblogic, kemudian pilih next.

  • Dibagian Adapter interface, pilih Define from operation and schema (specified later), kemudian next.
  • Dibagian operation, kita pilih Consume Message, secara otomatis / default Operation name akan berisikan Consume_Message (kita bisa define sendiri nama operation JMS kita). Kemudian kita next.

  • Dilayar berikutnya, cari nama queue yang sebelumnya kita sudah buat beserta JNDI untuk queue (referensi pembuatan queue dan connection factory jms disini ), kemudian klik ok.

  • Dibagian selanjutnya, klik search pada message dan cari file xsd schema sebagai format input  message dari JMS ke queue. Kemudian next.



  • Kemudian finish.
Setelah kita menambahkan JMS Adapter, kemudian kita bisa dapat menambahkan File Adapter untuk menggenerate file output dari inputan. Berikut langkah - langkahnya.

  • Drag component File Adapter ke bagian external references.
  • Setelah keluar kotak dialog file adapter, klik next.


  • Isi nama operation file adapter, klik next.
 
  • Pilih Define from operation and schema (specified later), kemudian next.

  • Pilih write file, klik next
  • Pilih path file output dari file adaper, untuk file naming isi dengan nama sesuai dengan keinginan. Jika anda ingin memberi format seperti tanggal, auto increment, dsb bisa menambahkan simbol "%" di akhir nama file, seperti "JMS_%SEQ%.TXT", yang artinya setiap sistem di ekseskusi (setiap instance), maka file naming akan auto increment menjadi JMS_1.txt, JMS_2.txt, dsb. Klik next
  • Dibagian selanjutnya, klik search pada message dan cari file xsd schema sebagai format input  message dari JMS ke queue. Kemudian next dan finish.

Berlanjut ke part berikutnya.

Enterprise Manager 12c Sizing and Installation

Dalam post kali ini saya akan menjelaskan step by step instalasi Enterprise Manager Cloud Control 12c berikut dengan pertimbangan sizing hardware dsb. Akan ada beberapa error yang akan ada temui, dan mudah-mudahan anda dapat terbantu dengan mengikuti tutorial ini. Langkah-langkah ini tidak membahas proses seluruh konfigurasi di level OS dan Database ataupun proses instalasi Java/Jrockit dan Weblogic yang cukup straight forward. Apabila anda memiliki pertanyaan akan kedua topik ini, silahkan bertanya melalui comment di post ini.

Proses instalasi menggunakan Oracle Linux 5.9, Jrockit jrockit-jdk1.6.0_37-R28.2.5-4.1.0-linux, Weblogic 10.3.6 dan Oracle Database 11.2.0.1.

Langsung saja, execute installer EM12c anda dengan menjalankan ./runInstaller dan ikuti langkah-langkah berikut:

  1. Next untuk step 1 dan 2, silahkan memasukkan credential support Oracle apabila perlu. Anda akan masuk ke screen Prerequisite Check. Disini akan dilakukan pengecekan level OS dimana EM akan diinstall. Step yang biasanya gagal adalah pada bagian host name, yang secara default bernama localhost.localdomain dan ini tidak dapat dipakai sebagai host name yang valid. Ikuti langkah 2 apabila anda mengalami problem ini, hingga semua Prerequisite Check sukses. 
  2. Edit file /etc/hosts anda dengan memasukkan hostname yang sesuai (nostraem.domain dalam tutorial ini). File /etc/hosts anda nantinya kira-kira akan memiliki entry sebagai berikut: 
  3. Layar berikutnya akan membawa anda ke Installation Type, dimana anda akan memilih tipe instalasi yang dapat berupa Simple(sebaiknya dipilih hanya untuk environment development), Advance, Upgrade ataupun Install Software Only(hanya menginstall file binary tanpa konfigurasi). Dalam blog ini, kita akan memilih Advance. 
  4. Berikutnya anda akan diminta memasukkan detil dari Middleware Home(lokasi instalasi Weblogic Server), Agent Base Directory(tempat dimana agent akan diletakkan ketika kita menginstall EM12c.) dan Host Name. 
  5. Instalasi kemudian akan dilanjutkan dengan Plug-in yang akan dideploy bersamaan dengan proses instalasi EM. Plug-in ini akan berlaku untuk menentukan apa saja aplikasi yang nantinya akan dimonitor oleh EM. Silahkan pilih plug in yang diperlukan di layar ini. 
  6. Next, masukkan password dari domain administrator dan node manager yang akan dipakai. 
  7. Berikutnya adalah step yang sangat KRUSIAL. Anda dapat mengalami kegagalan yang sulit dilacak apabila asal-asalan memilih pilihan yang ada di screen ini. Screen ini menunjukkan detil dari koneksi database yang akan kita pakai dan juga Deployment size dari EM yang akan diinstall. Terdapat 3 pilihan yaitu Small, Medium dan Large. Pilihan mana yang sebaiknya anda ambil? Lanjutkan detilnya pada step ke 8 dan 9. 
  8. Apabila anda ingin tahu apa beda dari Deployment Size dari layar sebelumnya, dokumentasi Oracle menjelaskan perbedaannya. Field ini menentukan seberapa banyak jumlah agent yang dapat dipasang, jumlah target yang dapat dimonitor dan User Session yang dapat berjalan bersamaan. Besarnya Deployment Size juga menentukan seberapa besar resource Hardware yang harus disiapkan baik dari sisi Core Processor maupun Memory Allocation. Perhatikan spesifikasi hardware anda lalu pilih Deployment size yang sesuai agar proses instalasi dapat berjalan dengan baik. Saya berkali-kali gagal melakukan proses instalasi karena melewatkan detil ini.
     
  9. Setelah memasukkan credential DB dan deployment size, akan dilakukan pengecekan parameter database. Anda dapat segera memperbaikinya segera, atau nanti setelah proses instalasi selesai. Untuk parameter database, misalnya: sqlplus -> alter system set 'parameter_yangdiminta_misal_session_cached_cursors'=<jumlah_yang_diminta> scope=spfile;
  10. Masukkan password Sysman, ini akan dipakai sebagai password user Sysman di database maupun di webconsole EM12c. 
  11. Masukkan port yang akan dipakai untuk masing-masing komponen
     
  12. Layar berikut akan memberikan review dari detil instalasi yang akan dilakukan. Lanjutkan ke layar berikutnya untuk memulai proses instalasi.
  13. Tunggu hingga proses instalasi selesai. Ini akan memakan waktu yang cukup lama, be patient :). Diakhir proses instalasi, anda akan diminta melakukan eksekusi file allroot.sh. Buka Terminal, masuk ke folder yang disebutkan, lalu execute script yang dimaksud. Setelah selesai, kembali ke layar ini dan klik OK. 
  14. Selamat! Proses instalasi EM sudah selesai. Anda dapat mengecek home page EM berdasarkan URL yang disebutkan di akhir layar instalasi. 
  15. Buka browser anda dan buka https://<hostname>:<port(default7101)>/console untuk membuka weblogic console. Apabila sukses, anda dapat melihat di Environment -> Servers bahwa kedua server yaitu admin dan OMS telah RUNNING dan Healthnya OK. Di https://<hostname>:<port(default7799)>:em anda dapat mengakses Enterprise Manager anda dan mencoba fitur-fitur yang ada di EM :)


Selamat, anda telah berhasil melakukan proses instalasi Enterprise Manager 12c. Blog berikutnya akan membahas bagaimana melakukan konfigurasi Agent untuk berbagai environment di EM12c. Dengan adanya Agent ini, EM12c dapat melakukan monitoring seperti server health, SOA composite (untuk SOA domain) dsb. See you in the next post!



ADF Basic - Calling Java Method/Javascript Function on Page Load - Part 1

Welcome again to ADF Basic! :)

Dalam post kali ini, kita akan membahas bagaimana caranya memanggil sebuah function, baik Javascript maupun Java method ketika sebuah page di-load. Well, kedengarannya memang mudah, terutama untuk Javascript. Mungkin dalam pikiran anda terlintas 'yah, itu mah kalau di JQuery tinggal $(document).ready(function() {}) atau di javascript tinggal <body onload="function()"> aja beres'.

Yap, 2 pilihan mungkin ini bisa dilakukan terutama untuk test case mudah seperti 'alert()' dsb.
Bagaimana kalau anda mencoba dengan beberapa test case yang kompleks seperti menggunakan ajax dalam page onLoad()? Dalam banyak kasus ini akan membuat page ADF kita freeze dan tidak melakukan apa-apa. Padahal bisa jadi tidak ada yang salah dalam code dan function yang kita eksekusi.

Lalu, bagaimana caranya memanggil function dalam Java Bean atau javascript kita?
Ikuti langkah-langkah berikut untuk test case dalam javascript:

1. Buat sebuah project ADF di JDeveloper
2. Buat sebuah page .jspx
3. Dari Component Palette, masukkan sebuah component ADF Resource dengan type=javascript. Setelah men-drop komponen ini, page kita nantinya akan memiliki tag sebagai berikut:  <af:resource type="javascript" />
4. Buat function javascript yang kita inginkan dalam tag <af:resource> pada langkah sebelumnya. Dalam contoh ini, javascript yang dibuat akan membuka sebuah pop-up dengan ID=popUP1 yang berisi text 'test'. Hasilnya nanti misalnya adalah sebagai berikut:



5. Langkah terakhir adalah membuat ADF component (client listener) yang akan mengeksekusi method yang kita buat di step langkah 4 ketika page di-load. Source code dalam page kita nantinya adalah sebagai berikut: <af:clientListener method="nama_method_dalam_step_4" type="load"/>. Perhatikan 'type' dari 'clientListener' ini adalah 'load' agar method ini dieksekusi ketika page di-load. Jangan lupa untuk memastikan bahwa <af:clientListener> berada didalam tag <af:document> </af:document>.



6. Jalankan program, maka ketika page pertama kali di-load, maka akan muncul pop up yang berisi 'test' yang kita buat dalam langkah 4.



That's it, anda berhasil membuat sebuah method onLoad dalam JavaScript.

Berikutnya adalah bagaimana membuat method onLoad untuk sebuah Java method dalam Java Bean. Tujuannya adalah agar kita bisa mengexecute sebuah method dalam java bean ketika sebuah page diload.


  1. Buat sebuah java bean misalnya BeanTest.name. Dalam contoh ini saya hanya akan membuat sebuah class dengan sebuah method simple 'onLoadExecute' untuk print out. Kita akan membuat method ini eksekusi ketika page dirender, sehingga kita dapat menjalankan java method ketika page di-load. 
  2. Right click class yang telah dibuat tadi, lalu kemudian pilih 'Create Data Control'. 
  3. Perhatikan bahwa untuk class yang tadi kita buat data control-nya, akan ada pasangan DataControl.dcx dan xml yang terbentuk. 
  4. Di tab Data Control JDeveloper, anda dapat melihat bahwa sudah terbentuk sebuah data control berdasarkan java class, serta semua method public yang dapat dipakai sebagai data control. 
  5. Drag method yang ingin diexecute ketika page di-load (dalam contoh ini 'OnLoadExecute') ke dalam page yang diinginkan misalnya ke dalam bentuk button. 
  6. Ketika selesai, buka page yang ada di step nomor 5. Anda dapat melihat di tab Data Control -> Binding bahwa method OnLoadExecute sudah ada dalam page binding. 
  7. Masih di tab Binding, klik tanda + di bagian executable, maka anda akan diminta untuk membuat  sebuah page binding baru. Pilih Generic Binding -> invokeAction. 
  8. Setelah anda memilih invokeAction, anda akan diminta untuk memasukkan ID untuk binding ini, dan ke method mana binding ini akan diikat. Masukkan nama unik sebagai ID dan pilih OnLoadExecute sebagai method, anda berhasil membuat sebuah binding dan method yang akan dieksekusi oleh binding ini. 
  9. Here comes the magic. Bagaimana anda mengexecute method dan binding ini ketika page diload? Buka property inspector untuk binding yang anda buat di langkah nomor 8. Di property 'Refresh', pilih 'prepareModel'. 
  10. Run page anda, dan perhatikan log. Anda akan melihat bahwa method anda berhasil dieksekusi ketika page pertama kali dibuat. Ketika anda me-refresh halaman ini, method ini juga akan dieksekusi pertama kali. Ini dapat anda manfaatkan ketika anda misalnya ingin menginisialisasi beberapa value sebelum page dibuat. 
Selamat! Anda berhasil menguasai bagaimana caranya menginisiasi/mengeksekusi sebuah fungsi di page, baik melalui javascript maupun java method. Semoga bermanfaat :)




Monday, May 27, 2013

Pembuatan Queue dan Connection Factory JMS Adapter Weblogic

Arsitektur JMS menggunakan satu client interface untuk banyak message server. Model message JMS memiliki dua domain pesan, point to point dan publish subcribe. Dalam domain point to point, pesan yang dikirimkan melalui antrian (queue) dan setiap pesan dikirim ke satu penerima (ConnectionFactory). Dalam domain publish subcribe, pesan akan di kirim ke topic (next tema), dan dapat di baca oleh banyak subcribe (pelanggan).

Pada blog ini, saya akan coba jelaskan langkah - langkah dalam pembuatan Queue dan Connection Factory (domain point to poin) JMS Adapter.
  • Buka Admin Console weblogic server.
  • Pada domain structure, pilih menu Services -> Messaging -> JMS Modules.
  • Klik New, isi nama JMS Module dan Descriptor File name. Kemudian klik next.
  • Pilih target server untuk JMS Module yang kita buat (disini saya memilih AdminServer dan soa_server1) kemudian klik next. Klik Finish.

Setelah JMS Module telah terbentuk, kemudian kita buat Queue dan ConnectionFactory. Pertama kita buat queue.
  • Klik new
  • Pilih queue dan next.
  • Isi nama Queue beserta JNDI untk queue. Klik next
  • Di layar berikutnya pilih Create a New Subdeployment, isi nama subdeployment klik ok. Pilih SOAJMSServer. Klik finish.


Setelah terbuat queue, kemudian kita buat connectionfactory.
  • Klik new, pilih ConnectionFactory.
  • Isi nama connection factory dan JNDI, kemudian next.
  • Secara default, target server untuk ConnectionFactory sama seperti target server untuk queue. Kemudian finish.
  • Setelah itu, masuk ke deployment (domain structure), klik JmsAdapter. Pilih Configuration -> Outbound Connection Pools. Klik new.
  • Secara default terpilih oracle.tip.adapter.jms.IJmsConnectionFactory, kemudian pilih next.
  • Isi JNDI untuk instace outbound Connection. Kemudian Finish.
  • Kemudian pilih Configuration -> Outbound Connection Pools.
  • Buka oracle.tip.adapter.jms.IJmsAdapterConnectionFactory. Kemudian pilih JNDI yang sebelumnya kita buat.
  • Isi ConnectionFactoryLocation dengan nama yang kita buat sebelumnya kemudian enter dan save.

Setelah membuat queue dan connection factory, kita jangan lupa melakukan proses update untuk jms adapter.
  • Masuk ke domain structure pilih deployments, checklist JmsAdapter kemudian pilih update.
  • Pilih Redeploy this application using the following deployment files. Pilih deployment path untuk menyimpan JMSPlan. Setelah itu klik Finish.