Monday, March 12, 2018

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!

No comments:

Post a Comment