Friday, May 06, 2005

Java XML-RPC, gampang banget...

Ingin membuat aplikasi client-server? tidak mau membuat web service karena terlalu ribet? tidak mau terlalu banyak coding dengan RMI? coba XML-RPC menggunakan Apache XML-RPC

Apache XML-RPC mudah digunakan. Hanya dengan sedikit coding kita sudah bisa membuat aplikasi client-server. Bisa menggunakan Built-in HTTP Server sebagai server atau kita juga bisa membuat servlet yang di-deploy di web server (servlet container).

Langkah pertama membuat class handler yang akan menjadi class pemroses (processor) dari setiap request. Contoh :
 public class Messenger {
public String send(String address, String message) {
// process sending message here
return "Sending successful to " + address+ " message is \"" + message + "\"";
}
}
Lalu buat server:
  import org.apache.xmlrpc.WebServer;
public class XmlRpcServer {
public static void main(String[] args) {
try {
WebServer webServer = new WebServer(7777);
webServer.addHandler("MyMessanger", new Messenger());
webServer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Setelah itu jalankan server, dan buat client:
  import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
public class SmsEngineClient {
public static void main(String[] args) {
try {
XmlRpcClient client = new XmlRpcClient("http://localhost:7777");
Vector params = new Vector ();
params.addElement("friend");
params.addElement ("Apa kabar euy?");
String result = (String) client.execute("MyMessanger.send", params);
System.out.println(result);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlRpcException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Jalankan program client, dan lihat hasilnya. Mudah sekali.

Dengan XML-RPC kita bisa dengan mudah melakukan pertukaran data dengan tipe:
int, boolean, java.lang.String, double, java.util.Date, java.util.Hashtable, java.util.Vector dan byte[] (byte array, untuk pengiriman file misalnya).

Jadi kenapa tidak pakai XML-RPC saja?

Menjalankan program Java pada Windows Service atau sebagai Unix daemon

Ingin menjalakan program java sebagai Windows Service? atau sebagai daemon di sistem operasi Linux atau Unix?

Kita bisa gunakan Java Service Wrapper dengan mudah untuk keperluan tersebut. Java Service Wrapper mempunyai tiga metode untuk dapat menjalankan aplikasi java kita sebagai Windows service atau daemon.

Metode yang paling mudah bahkan tanpa mengubah sedikitpun aplikasi yang sudah kita buat. Pada versi 3.1.2, hanya dengan mengubah file wrapper.conf sesuai kebutuhan dan menjalankan file MyApp.bat, kita sudah bisa menjalankan aplikasi java sebagai Windows service.

Tutorial menyusul...

Paging pada iBatis

iBatis memiliki inteface PaginatedList dengan PaginatedArrayList sebagai class implementasi yang bisa kita gunakan untuk keperluan paging dengan mudah. Tetapi sayangnya interface tersebut tidak memiliki method untuk mendapatkan berapa jumlah keseluruhan data. Kita hanya bisa membuat navigasi previous dan next dengan informasi halaman (page) tanpa bisa menampilkan jumlah seleuruh halaman atau record yang ada.

Dibawah ini kode demo menggunakan falitas paging pada ibatis:
 PaginatedList usersPL = UserDao.getUserPaginatedList(2);
for (int i =0; i < usersPL .size(); i++) {
System.out.println(usersPL .get(i));
}
System.out.println(
"-- Page: " + usersPL .getPageIndex() +
", Row size: " + usersPL .getPageSize() );

System.out.println("-- Goto page 3");
usersPL .gotoPage(3);
for (int i =0; i< usersPL .size(); i++) {
System.out.println(usersPL .get(i));
}
System.out.println("-- Page: " + usersPL .getPageIndex() );

System.out.println("-- Goto next page");
usersPL.nextPage(3);
for (int i =0; i< usersPL .size(); i++) {
System.out.println(usersPL .get(i));
}
System.out.println("-- Page: " + usersPL.getPageIndex() );

Followers