About Andreas Tjong

JAVA Programmer since 2008. Kettle designer as hobby since 2008.

Error Installing Application on IIS – very annoying


The application ‘/XXX’ belonging to site ‘2’ has an invalid AppPoolId ‘XXX’ set.  Therefore, the application will be ignored.

Pesan error di atas sangat menyebalkan sekali. Membuat saya kehilangan 3 hari hanya untuk memecahkan permasalahan saat menginstal aplikasi web di IIS 7.0. Pada saat instalasi hint yang diberikan adalah coba buka Event Viewer dan ikuti langkah pada event viewer tersebut untuk mengatasi masalah di atas. Setelah saya buka event viewer error message yang tertera adalah seperti di atas.

Jadi apa yang harus saya lakukan? Di bagian mana kah yang salah? Apakah ada salah configurasi pada installer nya atau ada file yang corrupt pada installer? Setelah meminta bantuan pada Om Google baru lah terpecahkan masalah-nya. Permasalahan nya adalah karena di Windows Server 2008 R2 – .NET Framework yang terinstall adalah 4.0 – Sedangkan pesan error di atas mengindikasikan bahwa program yang ingin di install membutuhkan .NET Framework 3.5.

Masalah solved hanya dengan menginstall .NET Framework 3.5, tanpa harus merubah privilege user apa pun juga. Yang membuat menjadi annoying nya adalah bagaimana caranya bisa tahu kalau program tersebut membutuhkan .NET Framework 3.5 dari error code di atas…

Advertisement

Test Connection Setiap Kali Set New Connection


Sebelum anda membuat sebuah koneksi ke Database perlu diperhatikan beberapa hal:
1. Apakah RDBMS anda mengijinkan remote connection?
2. Apakah RDBMS anda mengijinkan connection menggunakan jalur TCP-IP?
3. User ID yang akan digunakan apakah bisa dipakai via remote?


Sebagai contoh saya akan memberikan contoh tampilan untuk RDBMS – MS.SQL Server 2008.
Gambar di bawah adalah contoh Jalur Connection yang diperbolehkan.


Gambar di bawah adalah contoh Jenis Login yang diiinginkan.

Berikut saya akan memberikan contoh langkah2 yang biasa dilakukan untuk men-setup koneksi menggunakan PDI (a.k.a. Kettle). Sebagai Informasi Versi PDI yang saya gunakan adalah “Kettle – Spoon Stable Release – 4.2.0”.
1. Buat Object Table Input

2. Klik 2 kali Object tersebut, lalu klik New pada Connection

3. Isi Connectioon Type dengan nama yang anda inginkan. Tapi biasakan nama Connection mencerminkan nama Server dan nama Database yang dtuju. Untuk kemudahan maintenance
4. Pilih Connection Type: MS SQL

5. Access: Native (JDBC)
6. Host Name: Nama Server / IP Address Database yang anda tuju, example: localhost
7. Database Name: Nama Database Tujuan
8. Port Number: biarkan by Default saja, kecuali kalau settingan PORT DB Server nya sudah tidak default
9. Username & Password, supaya lebih aman, gunakan username dan password untuk SQL Authentication
10. Jika sudah, silahkan click TEST button untuk menge-check apakah koneksi anda berhasil atau tidak.

Gambar di bawah adalah contoh TEST connection yang gagal dan berhasil.



Jika anda merasa settingan connection sudah benar tetapi setelah di test ternyata gagal, ada beberapa kemungkinan yang biasa terjadi:
1. Versi JDBC dari Kettle yang anda gunakan sudah obsole (ketinggalan jaman :p)
2. Check Firewall di Server DB, Tambahkan PORT 1433 ke dalam Exclude PORT list.
3. Salah ketik. ??

Spring Web MVC – How to add picture and css (Episode 6)


OK. Kita akan mundur agak jauh pada episode kali ini. Kita akan menggunakan kembali Project yang telah kita buat pada episode 1 saja (NOTE: jika menggunakan episode yang selanjutnya juga tidak apa-apa, tinggal disesuaikan saja). Bagi yang blom mengerti tentang episode 1 itu apa, silahkan baca link https://andreastjong.wordpress.com/2010/12/17/spring-web-mvc-%E2%80%93-quick-start-with-eclipse-episode-1/ , akan sangat membantu sekali dalam pemahaman artikel ini.

Download beberapa jar yang dibutuhkan:

  1. standard-1.1.2.jar – silahkan di download di http://repo1.maven.org/maven2/taglibs/standard/1.1.2/standard-1.1.2.jar

Pada contoh ini saya coba membuat New Project dengan nama secondProgram. Dengan isi + structure yang sama dengan contoh pada episode 1. Target yang kita inginkan adalah membuat halaman Web seperti contoh di bawah:

Saya anggap kalian sudah mengikuti semua langkah2 yang ada pada Episode1. Untuk selanjutnya kita akan menambahkan file gambar dan css ke dalam halaman hello.jsp (Mohon maaf kalau gambar dan css yang saya gunakan kurang bagus, takut terbentur dengan masalah license nih. :p). Silahkan ikuti langkah2 berikut:

  1. Download library tambahan di atas, lalu masukkan ke dalam folder library project
  2. Buat folder images pada folder WebContent, lalu copy kan. Image anda ke dalam folder tersebut. (NOTE: tolong diperhatikan, nama file dan ext nya, sebaiknya dibuat menjadi huruf kecil semua, karena jstl case sensitive)
  3. Buat folder css pada folder WebContent, lalu create new file – “style.css “. Yang isinya sebagai berikut:
    * { font: 11px verdana, Verdana,DIN-Light sans-serif; }
    
    body {
    	margin:0;
    	padding:0;
    	background:#f9f9f9;
    }
    
  4. Edit hello.jsp (untuk nama file gambarnya, silahkan disesuaikan saja dengan nama file gambar anda)
    <!DOCTYPE html PUBLIC
    	"-//W3C//DTD XHTML 1.1 Transitional//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <html>
    <head>
    	<title>Example :: First Spring MVC Application</title>
    	<link href="<c:url value="/css/style.css"/>" rel="stylesheet" type="text/css" />
    </head>
    
    <body>
    	<h1>Example - Insert an Image</h1>
     	<p>For my nakama.</p>
    
     	<img alt="My Bike" src="<c:url value="/images/bike.png"/>">
    </body>
    </html>
    
    
  5. Coba jalankan aplikasi anda pada server. http://localhost:8080/secondProgram/hello.asik

Kettle – Load All Excel Files in a Folder


Contoh kasus kali ini adalah:

“Saya punya banyak file Excel dalam satu directory. Semua file ini formatnya sama. Saya ingin meload semua file excel ini kemudian dimasukkan ke dalam satu database. Bagaimana design yang efektif, sehingga saya tidak perlu membuat design satu persatu untuk tiap file excel tersebut? Apakah hal ini memungkinkan dilakukan oleh Kettle?”

Jawaban dari kasus di atas adalah Ya, sangat mungkin sekali. Bahkan relative cukup mudah untuk dilakukan. Sebagaicontoh, misalkan dalam directory di bawah ini saya punya 3 buah file Excel.

Tiap-tiap file Excel tersebut isinya seperti berikut:

Karena ini hanya sebuah contoh, anggap saja saya ingin output nya berupa text file.

Silahkan anda mengikuti langkah2 berikut:

  1. Buat design seperti ini (belum dikonfigurasi).
  2. Save design tersebut, di tempat file Excel disimpan.
  3. Klik 2 kali pada object “Excel Input”. Lalu  Pada inputan File or directory tekan “CTRL + Space” lalu pilih ${Internal.Transformation.Filename.Directory}. Pada inputan regex ketikkan “.*\.xls$” (tanpa tanda petik), lalu klik tombol Add.
  4. Coba anda Klik “Show filename (s)” – seharusnya muncul seperti gambar dibawah.
  5. Klik Ok.
  6. Klik 2 kali pada object “Text file output “. Lalu isikan seperti gambar di bawah.
  7. Save design yang sudah dibuat, lalu coba jalankan.
  8. Jika design ini benar, maka akan mencreate file “hasil.txt” pada directory tempat transformasi disimpan.

Simple JDBC Connection for AS400


Tujuan artikel ini adalah memberikan contoh bagimana membuat sebuah Simple Class untuk JDBC Connection + Menjalankan Query yang sangat simple sekali. Kenapa harus AS400? Karena contoh yang menggunakan MySQL atau MS SQL Server atau ORACLE sudah banyak sekali dipasaran. Apa sih AS400 itu? AS400 adalah bla bla bla (silahkan di klik saja bla bla bla nya).

Persiapan:

  1. Download jar yang dibutuhkan: jt400-full-6.0.jar, bisa di download disini.

Jika anda sudah pernah masuk ke dalam console – AS400 tentu akan sangat membantu sekali. Jika anda belom pernah masuk ke console – AS400, jangan berkecil hati dulu, karena apa yang saya bicarakan nanti mirip sekali dengan Query Analyzer pada MS SQL Server 2000.  Tujuan dari program ini adalah menjalankan query pada Menu STRSQL di AS400 atau Query Analyzer di MS SQL Server 2000.

To the point saja. Silahkan ikuti langkah-langkah di bawah:

  1. Jalankan aplikasi Eclipse anda. (Pada contoh ini saya menggunakan Eclipse 3.4.0)
  2. Klik Kanan pada Package Explorer. Lalu pilih New – Project – Java Project. Beri nama project nya “simpleJDBC”.
     

  3. Download jar di atas.
  4. Klik kanan project nya, pilih properties
  5. Pilih Java Build Path – Tab Libraries – Pilih Add External JARs. Cari file jar yang baru saja di download.
  6. Klik kanan “src” lalu pilih New – package. Beri nama “com.tjong.andreas”
  7. Klik kanan package “com.tjong.andreas” lalu pilih New – Class.  Beri nama: SimpleJDBCAS400. Jangan lupa “public static void main(String[] args)”-nya dicentang.
  8. Tulis code seperti di bawah:
    package com.tjong.andreas;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class SimpleJDBCAS400 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		/* Ini nanti diganti - disesuaikan dengan kondisi anda*/
    		String server = "NAMA_SERVER";
    		String userId = "USERID";
    		String password = "PASSWORD";
    
    		Connection conn = createConnection(server, userId, password);
    		Integer result = getData(conn);
    
    		System.out.println("RESULT COUNT = " + result);
    
    		closeConnection(conn);
    	}
    
    	public static Connection createConnection(String server, String userId, String password){
            String driver = "com.ibm.as400.access.AS400JDBCDriver";
            String url = "jdbc:as400://"+server;
            try{
            	Class.forName(driver);
            	return DriverManager.getConnection(url,userId,password);
            }
            catch(Exception e){
            	e.printStackTrace();
            	return null;
            }
    	}
    
    	public static void closeConnection(Connection conn){
    		try{
    			conn.close();
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    
    	public static Integer getData(Connection conn){
    		Integer output = 0;
    
    		Statement stmt = null;
    		ResultSet rs = null;
    
    		/* Ini nanti diganti - disesuaikan dengan kondisi anda*/
    		String query = "SELECT COUNT(1) AS TOTAL FROM NAMA_LIBRARY.NAMA_TABLE ";
    		try{
    			stmt = conn.createStatement();
    			rs = stmt.executeQuery(query);
    		    rs.next();
    		    output = rs.getInt("TOTAL");
    		}
    		catch(Exception e){
    			System.out.println("Error Running Query");
    			System.out.println("Error: " + e.getMessage());
    		}
    		finally{
    			try{
    				rs.close();
    				stmt.close();
    			}
    			catch(Exception e){
    				System.out.println("Error Closing statement");
    				System.out.println("Error: " + e.getMessage());
    			}
    		}
    		return output;
    	}
    }
    
    
  9. Testing Program anda. Caranya klik kanan Class “SimpleJDBCAS400”.