Monday, March 12, 2018

CARA DECRYPT PASSWORD WEBLOGIC MENGGUNAKAN WLST

Pada kali ini saya akan membahas mengenai bagaimana cara decrypt password yang ada pada AdminServer Weblogic. Hal ini sangat bermanfaat ketika kita melakukan migrasi configurasi weblogic dari satu domain ke domain lain. ketika kita menemukan adanya password yang telah di encrypt pada file xml datasource maka kita akan kebingungan bagaimana memindahkan datasource tersebut sedangkan jika merubah password nya maka koneksi ke database dari datasource tersebut akan error.
Dengan adanya blog ini diharapkan dapat membantu sedikit untuk masalah password yang di encrypt oleh weblogic. Pertama-tama kita akan membuat script WLST yang akan men-decript password yang kita inputkan ke dalam script tersebut. berikut contoh script yang dibuat:



(decryptPassword.py)



keterangan:
  • password = diambil dari password datasource atau password AdminServer
  • path = berisi path domain
Selain kedua isian tersebut tidak perlu diganti. Setelah itu jalankan command WLST sebagai berikut:
java weblogic.WLST decryptPassword.py
contoh: $ cd /u02/oracle/config/nodemanager $ . ./setWLSEnv.sh $ java weblogic.WLST decryptPassword.py Setelah command diatas dijalankan maka hasilnya akan seperti gambar berikut:
Cukup sekian pembahasan cara Decrypt password weblogic. Semoga tulisan ini dapat bermanfaat bagi banyak orang.

Create An Service From OSB [Version 11.1.1.7] (base:SOAP) and Consume With Spring Boot (base:REST)

Hello guys,

pada kesempatan kali ini gw akan share bagaimana membuat service di OSB versi 11.1.1.7 [base:SOAP], setelah servicenya dibuat lalu diconsume oleh client (baca:Developer Aplikasi)(consumer bisa menggunakan bahasa pemrograman apapun, namun kali ini menggunakan Java dengan Spring-Boot)[base:REST].

adapun tahapannya sbb :
1. koneksi jndi ke data source (host, username, password, dan database yang digunakan).
2. skema xsd. [2 File = Authentication & Skema itu sendiri].
3. skema wsdl. [1 File].
4. Business Service. [1 File].
5. Proxy Service. [1 File].
6. Code Java. [2 File = Services & Controller].

pada point 1 (pertama) tidak akan dibahas disini, silahkan teman2 mengikuti referensi di bawah ini ya :
- http://www.avioconsulting.com/blog/oracle-soa-database-adapter-101-weblogic-configuration-steps
- https://www.youtube.com/watch?v=plUfeiex7PU
- https://www.youtube.com/watch?v=5W2tm89yN4A

pada point 4 (empat) tidak akan dibahas detail disini, silahkan teman2 mengikuti referensi di bawah ini ya :
- https://www.youtube.com/watch?v=RxTawFPExVM

nah pada point ke 4 (empat) bahwa BS berfungsi dengan baik dan menghasilkan balikan sesuai dengan harapan ya (baca:apapun case studinya, misalnya tampilkan semua mahasiswa, tampilkan semua customer, tampilkan master area layanan, dll).

nah, untuk kasus kali ini adalah menampilkan Master Area Layanan. sebaiknya rekan-rekan mengambil kasus untuk query select * from tanpa parameter apapun.

---BAGIAN XSD---
1. EsbCommonSchema.xsd berfungsi sbg Autentifikasi payload request dan response saat service ini akan dipanggil (MANDATORY).

2. BCAFAPPS.xsd berfungsi berfungsi sbg "pengatur" payload request dan response untuk Service GetMasterAreaLayanan.
Nah, apakah untuk membuat service GetMasterAreaLayanan memerlukan xsd sepanjang itu? jawabannya TIDAK! terus kenapa panjang? karena itu sudah tercampur oleh "tag" service yang lainnya. apakah boleh dihapus? BOLEH! akan tetapi ada konsueksi nanti di wsdl yang akan dibuat pada tahap selanjutnya, perlu jg dihilangkan bagian yang tidak digunakan tadi.

*NB : selalu sesuaikan schemaLocation (baris 2) dimana tempat penyimpanan EsbCommonSchema.xsd nya ya.

---BAGIAN WSDL---
1. BCAFAPPS.wsdl berfungsi pengaturan binding request, response yang mana ini nanti akan diconsume oleh Proxy Service.

*NB : selalu sesuaikan schemaLocation (baris 9 dan 11) dimana tempat penyimpanan (BCAFAPPS.xsd dan EsbCommonSchema.xsd nya ya).

---BAGIAN PROXY SERVICE---
Nah buat proxy service dengan kriteria pada gambar 1 ya

Gambar 1

pada bagian message flow tambahkan route yang memanggil nama Business Service yang sudah dibuat tadi seperti gambar 2

Gambar 2

tambahkan komponen replace pada routing, sesuai gambar 2, dengan contoh pada gambar 3 pada "value" isinya berdasarkan (payload request) saat dijalankan Business Service (tinggal copas aja ya). *NB : jangan coba2 ngikutin seperti gambar 3, karena untuk setiap case hasil generatenya berbeda-beda. jadi rekan-rekan harus test console business servicenya lalu copas request document di payloadnya ya!

Gambar 3

jika sudah, pada bagian response pipeline tambahkan komponen 3 komponen Assign, dan 1 komponen replace seperti gambar 4.

Gambar 4

nah, detilnya sbb :
  • assign pertama nama variable = "jumlahRows", value = baris 50
  • assign kedua nama variable = "ListAreaIdLayanan", value = 36-48
  • assign ketiga nama variable = "ListAreaNameLayanan", value = 22-34
  • replace : location = body, xpath = ., replace option = replace node contents, value = 1-20

Nah, komponen untuk membuat service di OSB telah selesai. saatnya untuk test lewat soapui seperti gambar 5.
Gambar 5

itu berarti service yang sudah kita buat sudah di OSB siap di consume oleh consumer.

---BAGIAN CONSUMER---
untuk bagian consume service base soap gw menggunakan IDE IntellijIDEA yang Ultimate yang sudah menyediakan fitur untuk "generate java code from wsdl". tinggal menggunakan saja, nah untuk rekan-rekan yang Community silahkan mengikuti referensi di bawah ini ya ...

- http://www.webservicex.net/stockquote.asmx?op=GetQuote
- https://www.youtube.com/watch?v=E-r8JUx5rw4
- https://www.mkyong.com/webservices/jax-ws/jax-ws-wsimport-tool-example/
- http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/wsimport.html
- http://www.thejavageek.com/2015/01/28/using-wsimport-command-generate-web-service-client/

nah gw pun sudah mengikuti dan ternyata bisa, seperti gambar 6 ya, cukup mudah lewat terminal "wsimport -keep -verbose http://www.webservicex.net/stockquote.asmx?wsdl" tanpa kutip dua ya.
gambar 7 dan 8, kalo menggunakan Intellij IDEA tinggal pake doang. jika sudah tergenerate java code nya akan muncul pada target folder atau package yang telah kita define tadi seperti gambar 9.


Gambar 6

Gambar 7

Gambar 8

Gambar 9

kalo udah seperti yang udah dibahas sebelumnya hanya ada 1 service dan 1 controller. maka yang di bawah ini code untuk Servicenya ya...


Nah yang di bawah ini adalah code untuk code Controller nya ya...

jika sudah, kita coba langsung di postman ya sesuai pada gambar 10.
Gambar 10

Dan yes, semua sudah tercapai ya guys, buat service di osb udah, testing service yang sudah dibuat osb juga sudah, dan consume service dan testing servicenya juga sudah.

selamat mencoba dan selamat mengembangkan lebih jauh lagi guys, jika ada pertanyaan atau ada yang kurang jelas silahkan ditanyakan ya...

Terima kasih!

Sunday, March 11, 2018

How To Send Email From Oracle Service Bus

Hello Guys,

Pada kesempatan kali ini, gw akan share bagaimana caranya mengirimkan Email menggunakan Oracle Services Bus. Adapun tahapannya yaitu, sbb :

1. Configurasi SMTP Server.
2. Buat skema XSD. [2 File]
3. Buat skema WSDL. [1 File]
4. Buat Business Service. [1 File]
5. Buat Proxy Service. [1 File]

karena fokus pada pembuatan services, maka pada point 1 (pertama) dapat dilihat dengan referensi :
- http://www.soawork.com/2012/08/blog-post.html
- https://jmmatejavablog.wordpress.com/2013/10/08/sending-an-email-with-an-attachment-from-oracle-service-bus-part-3-chris-tomkins-blog/
- http://soa-bpel-esb.blogspot.co.id/2010/08/configure-email-server-with-oracle.html

---BAGIAN XSD---

1. EsbCommonSchema.xsd berfungsi sbg Autentifikasi payload request dan response saat service ini akan dipanggil (MANDATORY).
2. SendEmail.xsd berfungsi sbg "pengatur" payload request dan response untuk format mengirim email.
jangan lupa sesuaikan posisi penyimpanan EsbCommonSchema.xsd
*NB : pada baris ke 2 bagian schemaLocation.
---BAGIAN WSDL---
1. SendEmail.wsdl befungsi pengaturan binding, request, dan response yang mana ini nanti akan diconsume oleh Proxy Service
jangan lupa sesuaikan posisi penyimpanan SendEmail.xsd
*NB : pada baris ke 4 bagian schemaLocation.

---BAGIAN BUSINESS SERVICE---
1. Buatlah Business Service dengan nama "ProSendEmail_BS" atau mau ganti nama yang lain silahkan dengan kriteria seperti 4 gambar di bawah ini ya
Gambar 1

Gambar 2

Gambar 3


Gambar 4

---BAGIAN PROXY SERVICE---
1. Buatlah Proxy Service dengan nama "ProSendEmail_PS" atau mau ganti nama yang lain silahkan dengan kriteria seperti 3 gambar di bawah ini ya
Gambar 5

Gambar 6

Gambar 7

pada gambar yang 5 menggunakan resource SendEmail.wsdl yang sudah dibuat sebelumnya. pada gambar 6 menentukan jenis protocol dan Endpoint uri. jika sudah selesai pada bagian message flow (pipeline) buatlah hingga tampak seperti ini. Komponen untuk membuat seperti di bawah ini yaitu : (Pipeline Pair, Route, Stage(dalam request and response))
Gambar 8

---BAGIAN STAGE REQUEST---
pada gambar 9, terdapat 5 komponen assign dengan detil sbb, nah untuk peletakan posisi dibebaskan tidak harus sesuai pada detail dibawah, tapi expression dan variable nya juga harus make sense ya :

A. 
  • expression = $body/ssen:Email/ssen:RequestParameter/ssen:To/text()
  • variable = email_to
B.
  • expression = $body/ssen:Email/ssen:RequestParameter/ssen:CC/text()
  • variable = email_cc
C.
  • expression = $body/ssen:Email/ssen:RequestParameter/ssen:Subject/text()
  • variable = email_subject
D.
  • expression = $body/ssen:Email/ssen:RequestParameter/ssen:Body/text()
  • variable = email_body
E. 
  • expression = $body/ssen:Email/ssen:TrxId/text()
  • variable = trxid


Gambar 9

---BAGIAN STAGE RESPONSE---
pada gambar 10, terdapat 1 komponen yaitu Replace, dengan detil sbb :

A.

  • xpath, in variable, replace bisa dilihat pada gambar 11.
  • Expressions di bawah gambar 11 ya
Gambar 10

Gambar 11

---BAGIAN ROUTE---
pada gambar 12, terdapat komponen yaitu sbb :
1. 2 komponen transport header
2. 1 komponen if
3. 1 komponen replace
Gambar 12

nah pada tulisan "Routing" pilihlah target Business Services yang telah kita buat tadi dengan nama "ProSendEmail_BS" seperti pada tahap sebelumnya (gambar 15).

pada komponen transport header yang 1 kita isi seperti gambar 13, tulisan "email,Subject,To" bukan ditulis tapi milih dari combobox yang telah disediakan ya (contoh gambar 14).

Gambar 13

Gambar 14

Gambar 15

pada komponen if isikan conditionnya dengan "not(empty($email_cc))" tanpa kutip dua ya. jika sudah dilakukan kita lanjut pada transport header yang ke 2, yang berada di dalam if (gambar 16).

Gambar 16

selanjutnya yang terakhir replace pada gambar 12, lihat gambar 17
Gambar 17

nah sekarang semua sudah selesai, dan siap dilakukan pengujian. nah kali ini gw akan nyoba lewat IDE SoapUI.

Gambar 18

Gambar 19

Nah setelah dicoba sudah bisa ya mengirimkan email dari OSB, sesuai tujuan dari tutorial kali ini. semoga bermanfaat, dan selamat mengembangkan lebih jauh lagi ya...

jika ada pertanyaan atau ada yang kurang jelas, silahkan comment ya...

Terima kasih!



Friday, March 9, 2018

Konfigurasi Websocket dengan AngularJs

Hallo guys, Kali ini saya mau share tentang Websocket.

Sebelum memulai Konfigurasinya kita perlu tahu ni apa sih Websocket itu? bagaimana cara kerjanya, dan apa keuntungannya menggunakan Websocket ini.

Pertama saya akan membahas tentang apa sih Websocket itu?
Simplenya sih websocket itu kalau diartikan adalah penghubung komunikasi antara klien ke server. Websocket itu bidirectional, maksudnya adalah dia bisa melakukan transfer pesan dengan 2 flow, bisa dari client ke server / server ke client. yang terakhir adalah realtime. jadi dengan websocket ini kita bisa mendapatkan data secara realtime.

Ini nih contoh visual konsep dari websocket.

Contoh Flow Websocket

Ada beberapa contoh aplikasi yang menggunakan websocket.
1. Multiple Browser Games contohnya kita bisa membuat games tetris, dengan menggunakan websocket kita bisa menghitung score di 2 browser yang berbeda dengan realtime score.
2. Live Text di Berita sebagai fungsi untuk broadcast.
3. Realtime apps multiuser. contohnya adalah chat seperti telegram atau whatsapp

Keuntungan Menggunakan Websocket diantaranya sebagai berikut :
1. Cross Origin Communication
2. Cross Platform Compatibility (bisa untuk web, desktop ataupun mobile)
3. Size saat berkirim pesan lebih kecil daripada menggunakan Restful / Http.

Udah paham kan apa itu websocket?

Sekarang kita akan melakukan konfigurasi websocket dengan Angularjs.
Pertama kita harus menginstal dulu stomp, untuk menjalankan websocket. caranya gampang, cukup dengan menggunakan command ini 

bower install --save ng-stomp atau npm install --save ng-stomp

setelah menginstall kita perlu memasukkan file JSnya di App.js

<script src="bower_components/ng-stomp/dist/ng-stomp.standalone.min.js></script>

pastikan juga filenya sudah benar benar ada di path tersebut.
setalah itu masukkan depedency ngStomp di App.js 

Nah, setelah semua terpasang, kita mulai dengan membuat service websocket. setelah dibuat kita hanya perlu menambahkan code ini kedalam service tersebut.

Konfigurasi Websocket

Pertama kita membuat dulu object bernama socket.
lalu kita membuat fungsi di socket tersebut. didalam fungsi tersebut kita perlu connect di endpoint misalnya contoh diatas adalah 'http://www.contoh.com/notification';
Setelah itu kita juga perlu subscribe chanel yang ada di endpoint yang telah kita sambungkan. channel ini berperan seperti sebuah ruangan untuk menerima broadcast yang dilempar dari server, payload adalah hasil data / pesan yang kita terima.

setelah konfigurasi selesai, kita perlu memanggil service tadi ke dalam controller aplikasi kita. cukup dengan menggunakan code ini untuk memanggil fungsi yang kita buat tadi. 

websocketService.connectAndSubscribe();
websocketService adalah nama service kita.
connectAndSubscribe adalah nama fungsi kita.

Nah Cukup mudah kan cara implementasi Websocket ini.
Untuk Catatan saja, 1 controller cukup hanya panggil service websocket sekali saja (
websocketService.connectAndSubscribe()) karena nanti payload yang akan dikeluarkan bisa lebih dari 1. atau kalian bisa set service itu di header untuk menjalakan service secara global.

Cukup dulu tentang Websocket.
Terima Kasih Semua, semoga artikel ini bermanfaat buat teman-teman semua

Referensi :
1. https://www.pubnub.com/blog/2013-09-11-what-are-websockets/
2. https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-api-understanding-the-difference/
3. http://www.jurnalweb.com/sekilas-tentang-websocket/
4. http://salmanfaris15.blogspot.co.id/2015/05/web-socket.html

Monday, February 12, 2018

Integration Jenkins with Bitbucket

Hallo rekan-rekan Nostra, kali ini saya ingin berbagi tentang integrasi Jenkins dan Bitbucket. Nah diharapkan dengan intergrasi ini, ketika developer melakukan proses commit di repository, maka akan otomatis deploy job dari setiap repository di jenkins. Jadi akan menghemat waktu development, dibanding harus memanggil devops untuk deploy job di jenkins.

Pertama kita buka dashboard jenkins, lalu install plugin Bitbucket Plugin
dapat diakses melalui Manage Jenkins -> Manage Plugins -> tab Available -> Lalu pilih Bitbucket Plugin.













Setelah itu, masuk ke halaman Bitbucket. Untuk menambahkan webhook.









Klik repo yang akan ditambahkan webhook, lalu klik Setting -> Webhook -> Add Webhook












Lalu lengkapi form yang dibutuhkan akses webhook,
  • Title : nama webhook ex: jenkins
  • URL : url jenkins/bitbucket-hook
    ex: http://aegisdevapp03.southeastasia.cloudapp.azure.com:8080/bitbucket-hook/
  • Status : active
  • Repository : push


















Selanjutnya, kembali masuk ke jenkins dan job yang akan kita deploy. Klik Configure pada job.
Lalu pada Build Trigger, beri tanda centang untuk pilihan "Build when a changed is pushed to Bitbucket".













Lalu Klik Save.

Untuk pengujian bisa dilakukan dengan melakukan perubahan di repository langsung. Maka akan otomatis jenkins akan deploy job dari repo tersebut.

Selamat mencoba.