Step by step how to invoke Java Web Service JAX-WS with PHP Soap – Cara consume Java Web Service JAX-WS dengan PHP Soap

Sekali-kali kasusnya adalah sistem aplikasi yang kita bangun menggunakan PHP 5 dan ada kebutuhan untuk mengakses sebuah web service berbasis Java. Kalau dari pengalamanku, yang seperti ini jarang sekali dibuat. Nhaa sekalinya kudu buat, banyak hal yang belum aku ketahui tentang konsep SOA di PHP. Makanya aku buat tulisan ini agar nggak lupa nanti jika ada keperluan yang sama.

Jika selama ini aku mengembangkan aplikasi berbasis SOA menggunakan Java EE 6, yang di sana itu begitu mudah dan simpel, maka ketika menggunakan PHP agak keteteran karena harus banyak hal manual yang harus dilakukan. Misalnya mengetahui struktur xml untuk yang complexType, baik ketika sebagai parameter maupun sebagai return.

Oke, di bawah ini aku share cara menginvoke java web service JAX-WS dengan PHP Soap pada PHP 5. Ada beberapa point yang aku tulis dibawah ini yaitu :

  • Skenario
  • Programming Stack
  • Step by step
  • Study Case
  • Permasalahan

Mari kita mulai satu per satu !

Skenario

  1. Kita punya sebuah project java web service JAX-WS bernama Siap. Ada beberapa method di sana:
    1. public String helloSiap(String nama)
    2. public String savePerson(Person person)
    3. public Person getPerson(String nama, int age)
    4. public DataPerson getDataPerson(Person person)
  2. Kita punya sebuah project php yang nantinya akan menggunakan PHP Soap sebagai soap clientnya.

Programming Stack

  1. OS Ubuntu 12.04
  2. IDE Netbeans 7.2
  3. Java EE 6 atau yang lebih
  4. PHP 5.1 atau yang lebih baru dengan mode SOAP enabled
  5. Apache 2.2.2 untuk menjalankan php pada port 80
  6. Glassfish Application Server untuk menjalankan Java Web Service pada port 8080

Step by Step

Pertama, kita buat terlebih dahulu java web servicenya dengan tipe JAX-WS, bukan JAX-RPC. Kita akan gunakan Java EE6 tanpa framework apapun sehingga ringan dan mudah dalam tutorial ini. Tetapi nantinya pada praktek aplikasi, java web service ini tergantung pada model pengembangannya. Mau pake framework seperti Spring Web Service juga nggak masalah.

Kedua kita buat PHP 5 Project dengan nama javawsclient yang akan running pada alamat http://localhost/javawsclient. Mengapa PHP5, karena versi 4 belum mendukung PHP Soap. Dulu orang ngakses web service menggunakan NuSoap. Dan ribet sekali kalau aku rasakan. Hampir semua serba manual. Nah di PHP Soap ini sudah banyak yang diotomasikan oleh PHP, sehingga cukup sedikit sentuhan koding saja.

Study Case

Sebagai hasil dari latihan kita di atas, mari kita langsung praktek membuat Web Service Client untuk mengambil data Kurs / Nilai Valuta masa asing yang aku sediakan di website http://www.beacukai.go.id

Masalah yang mungkin akan terjadi.

  1. Ada sedikit perbedaan antara PHP 5.1 dengan PHP 5.3 yaitu dalam hal pembuatan parameter. Misalnya kita akan membuat sebuah parameter yang merujuk pada class Person (complexType), untuk menginvoke sebuah method dengan parameter Person personPada PHP 5.1, pembuatan parameter dengan model pembuatan array yaitu:
    <?php
    $param = array("nama"=>"Ahsan","age"=>21);
    ?>
    

    Pada PHP 5.3, pembuatan parameter harus menggunakan stdClass yaitu:

    <?php
    $param = new stdClass();
    $param->person = new stdClass();
    
    $param->person->nama = "Ahsan";
    $param->person->age = 21;
    ?>
    
  2. Kita harus tahu betul struktur class dari parameter atau return pada Java Web Service-nya agar tidak mencoba-coba nama variabelnya ketika akan mengisinya dengan nilai terutama ketika sebagai parameter. Kalau sebagai return kita bisa melihat strukturnya dengan print_r dari hasil invoke.

Demikian share saya mengenai Cara Menginvoke Java Web Service JAX-WS menggunakan PHP Soap. Semoga artikel ini sebagai catatan yang baik untuk aku ingat dan berguna juga bagi temen-temen yang lagi mengalami masalah yang sama.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s