Spring Web MVC – Create Log File (Episode 3)


Persiapan:

  1. Tau cara Start New (Dynamic Web) Project menggunakan Eclipse. Jika belum tahu silahkan baca artikel ini
  2. Sudah membaca artikel Spring Web MVC – Quick Start with Eclipse (Episode 1). Jika belum, silahkan baca artikel ini
  3. Sudah membaca artikel Spring Web MVC – Quick Start with Eclipse (Episode 2). Jika belum, silahkan baca artikel ini

File-file yang dibutuhkan:

  1. slf4j-api-1.6.1.jar – silahkan download disini
  2. standard-1.1.2.jar – silahkan download disini
  3. logback-core-0.9.27.jar- silahkan download disini
  4. logback-classic-0.9.27.jar- silahkan download disini
  5. logback-access-0.9.27.jar- silahkan download disini

Salah satu hal yang penting dalam mebuat sebuah aplikasi adalah adanya log, gunanya adalah mentrace jalannya aplikasi – siapa tahu ada error. Untuk contoh ini kita akan menggunakan library sl4j java. File-file pendukung nya dapat anda lihat pada list di atas.

Silahkan ikuti langkah2 berikut:

  1. Tambahkan file2 diatas ke dalam library anda.
  2. Edit web.xml. Tambah beberapa baris code, sehingga menjadi sperti ini:
     <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
    	xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
    	<display-name>firstProgram</display-name>
    
    	<filter>
    	  	<filter-name>LoggerContextFilter</filter-name>
    	  	<filter-class>ch.qos.logback.classic.selector.servlet.LoggerContextFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>LoggerContextFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    
        <servlet>
            <servlet-name>tjong</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>tjong</servlet-name>
            <url-pattern>*.asik</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>tjong</servlet-name>
            <url-pattern>*.xls</url-pattern>
        </servlet-mapping>
    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    
    

    Edited 23 Maret 2011 09:03 AM: thanks to gery.

  3. Buat file logback.xml di folder resources.
    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration>
    	<appender name="FILE"
    		class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<file>firstProgram.log</file>\
    		<rollingPolicy
    			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    			<FileNamePattern>
    				firstProgram.%d{yyyy-MM-dd}.log
    			</FileNamePattern>
    		</rollingPolicy>
    		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    			<pattern>
    				%date{ISO8601} %level [%thread] %logger{10} [%file : %line]	%msg%n
    			</pattern>
    		</encoder>
    	</appender>
    
    	<appender name="STDOUT"
    		class="ch.qos.logback.core.ConsoleAppender">
    		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    			<pattern>
    				%date{ISO8601} %level %msg%n
    			</pattern>
    		</encoder>
    	</appender>
    
    	<root>
    		<level value="debug" />
    		<appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </configuration>
    
    

    Edited 23 Maret 2011 09:03 AM: thanks to gery.

  4. Buat Class ExcellExampleController.java pada package com.firstProgram.web
    package com.firstProgram.web;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import java.io.IOException;
    
    @Controller
    public class ExcellExampleController{
    
     private static final Logger logger = LoggerFactory.getLogger(ExcellExampleController.class);
    
     @RequestMapping (value="/excell.asik", method=RequestMethod.GET)
     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
     return new ModelAndView("pages/excell");
     }
    
     @RequestMapping (value="/excell.xls", method=RequestMethod.POST)
     public ModelAndView generateExcell( @RequestParam(value="firstName",required=false) String firstName
     ,@RequestParam(value="lastName",required=false) String lastName
     ,@RequestParam(value="speciality",required=false) String speciality
     ,HttpServletRequest request
     ,HttpServletResponse response)
     throws ServletException, IOException {
    
     logger.info("First Name : '{}'", firstName);
     logger.info("Last Name : '{}'", lastName);
     logger.info("Speciality : '{}'", speciality);
    
     return new ModelAndView("pages/excell");
     }
    
    }
    
    
  5. Edit file view.properties:
    pages/hello.url = /WEB-INF/pages/hello.jsp
    pages/hello.class= org.springframework.web.servlet.view.JstlView
    
    pages/excell.url = /WEB-INF/pages/excell.jsp
    pages/excell.class= org.springframework.web.servlet.view.JstlView
    
  6. Buat file excell.jsp pada folder firstProgram/WebContent/WEB-INF/pages
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
    <title>Episode 3</title>
    <link href="<c:url value="/css/style.css"/>" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <h1>Please Input:</h1>
    <div><label for="firstName">First Name</label>
    <input id="firstName" name="firstName" type="text" value="${firstName}" /></div>
    <div><label for="lastName">Last Name</label>
    <input id="lastName" name="lastName" type="text" value="${lastName}" /></div>
    <div><label for="speciality">Speciality</label>
    <input id="speciality" name="speciality" type="text" value="${speciality}" /></div>
    <div><label> </label>
    <input type="submit" value="Next" />
    <input type="reset" value="Cancel" /></div>
    </body>
    </html>
    
  7. Buat folder css pada folder firstProgram/WebContent
  8. Buat file style.css di folder firstProgram/WebContent/css
    * { font: 11px verdana, Verdana,DIN-Light sans-serif; }
    
    body {
    margin:0;
    padding:0;
    background:#f9f9f9;
    }
    
    h1{
     font: 30px verdana;
    }
    
    form label {
     width:120px;
     display: inline-block;
    }
    
    form input {
     width:180px;
     margin-top:10px;
     vertical-align: medium;
    }
    
  9. Testing aplikasi anda. http://localhost:8080/firstProgram/excell.asik
  10. Coba masukkan inputan lalu di submit. Kemudian check console anda.

Advertisements

Spring Web MVC – Quick Start with Eclipse (Episode 2)


Persiapan:

  1. Tau cara Start New (Dynamic Web) Project menggunakan Eclipse. Jika belum tahu silahkan baca artikel ini
  2. Sudah membaca artikel Spring Web MVC – Quick Start with Eclipse (Episode 1). Jika belum, silahkan baca artikel ini

Apakah anda sudah mengerti alur dari program yang sudah anda buat pada Episode 1? Jika belum, akan saya coba jelaskan agak detail:

  1. Anda (client) merequest alamat http://localhost:8080/firstProgram/hello.asik
  2. Web Server akan membaca settingan web.xml, disitu kita deklarasikan kalau ada request yang berakhiran dengan .asik maka akan diproses oleh Class org.springframework.web.servlet.DispatcherServlet, dengan settingan yang dibuat ada di tjong-servlet.xml
  3. Lalu si Web Server akan membaca settingan lagi di tjong-servlet.xml, disitu kita deklarasikan, jika ada yang merequest page “/hello.asik” akan diatur oleh Controller class=”com.firstProgram.web.HelloController
  4. Web Server akan membaca class com.firstProgram.web.HelloController, pada class HelloController, kita sudah mendeklarasikan untuk menampilkan file pages/hello.jsp. Maka Web Server akan menampilkan pages/hello.jsp kepada Anda (client).

Coba anda perhatikan, jika anda ingin membuat banyak page, pasti akan sangat merepotkan jika harus mendeklarasikan satu persatu file yang anda buat ke dalam tjong-servlet.xml (Khusus untuk controler, anda harus mendeklarasikan satu persatu Controller untuk page yang anda buat). Untuk mengatasi hal tersebut – Spring telah mempersiapkan beberapa optional untuk mengatur konfigurasi Controller dan View – silahkan baca (http://static.springsource.org/spring/docs/2.5.x/reference/view.html) jika ingin mengetahui lebih lanjut. Untuk contoh pada artikel ini saya akan mencoba menggunakan class org.springframework.web.servlet.view.ResourceBundleViewResolver.

Langsung ke contoh saja, silahkan ikuti langkah2 berikut:

  1. Tambahkan javax.servlet-jstl.jar ke folder lib. link bisa diambil di sini.
  2. Edit tjong-servlet.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    
    <!-- the application context definition for the springapp DispatcherServlet -->
    
    <!-- Contoh Pada Episode 1 -->
    <!-- <bean name="/hello.asik" /> -->
    
    <!-- Contoh Pada Episode 2 -->
    <context:component-scan base-package="com.firstProgram.web"/>
    
    <!--Kesalahan pada contoh Gery, see the comment below-->
    <!--<bean id="viewResolver"
    p:basename="views"/>-->
    <bean id="viewResolver"
    p:basename="view"/>
    
    </beans>
    

    *edited 21 March 2011: thanks to Gery

  3. buat Source Folder (selanjutnya untuk file-file configurasi sebaiknya disatukan saja di dalam folder ini) – pada saat build akan di-compile ke dalam Classpath. Caranya klik kanan nama Project – New – Source Folder. Beri nama resources
  4. buat file view.propertiesdalam folder resources yang baru saja anda buat.
    pages/hello.url = /WEB-INF/pages/hello.jsp
    pages/hello.class= org.springframework.web.servlet.view.JstlView
    
  5. pindahkan folder pages menjadi di dalam folder WEB-INF. (Untuk alas an keamanan).
  6. Edit HelloController.java
    package com.firstProgram.web;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import java.io.IOException;
    
    @Controller
    public class HelloController{
    
    	@RequestMapping (value="/hello.asik", method=RequestMethod.GET)
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            return new ModelAndView("pages/hello");
        }
    }
    
  7. Testing aplikasi anda. http://localhost:8080/firstProgram/hello.asik. Seharusnya tidak ada perubahan pada tampilan nya, yang berubah hany konfigurasi di belakang layarnya saja.

Spring Web MVC – Quick Start with Eclipse (Episode 1)


Sebelum anda mulai mengikuti tutorial di bawah, ada beberapa hal yang harus dipersiapkan:

  1. Tau cara Start New (Dynamic Web) Project menggunakan Eclipse. Jika belum tahu silahkan baca artikel ini.
  2. Download beberapa jar yang dibutuhkan:
  • spring-2.5.6.jar (untuk contoh ini saya masih menggunakan versi 2.5.6) – download disini
  • spring-webmvc-2.5.6.jar, download disini.
  • commons-logging.jar. download disini.

Ketiga jar diatas adalah minimal untuk memulai membuat Web menggunakan Spring MVC. Tutorial lainnya menggunakan Spring MVC dapat dengan mudah anda jumpai di internet, untuk tutorial yang saya buat ini – saya usahakan mudah dimengerti untuk pemula yang belum pernah menggunakan framework dalam pemrograman nya.

Agar pembelajaran lebih mudah – saya coba tampilkan dulu hasil akhir yang diinginkan. Perhatikan gambar di bawah:

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. Buat New Project dengan nama firstProgram
  3. Buat package com.firstProgram.web (untuk selanjutnya Class Controller akan dimasukkan ke dalam package ini.)
  4. Edit web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
     <display-name>firstProgram</display-name>
    
     <servlet>
     <servlet-name>tjong</servlet-name>
     <servlet-class>
     org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
     <servlet-name>tjong</servlet-name>
     <url-pattern>*.asik</url-pattern>
     </servlet-mapping>
    
     <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
    </web-app>
    
  5. Copy kan 3 buah jar yang sudah anda download ke dalam folder /WEB-INF/lib
  6. Perhatikan pada web.xml, disitu anda sudah menulis nama servlet anda adalah tjong, yang kebetulan adalah nama saya. :p dan menggunakan class org.springframework.web.servlet.DispatcherServlet. Pada spring, adalah suatu keharusan untuk membuat file xml dengan format nama <nama servlet yang di deklarasikan>-servlet.xml, fungsinya adalah mengatur settingan servlet anda.
  7. Buat file dengan nama tjong-servlet.xml di dalam folder WEB-INF
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:p="http://www.springframework.org/schema/p"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    
     <!-- the application context definition for the springapp DispatcherServlet -->
    <bean name="/hello.asik" class="com.firstProgram.web.HelloController"/>
    
    </beans>
    
  8. Buat folder pages di dalam folder WebContent. Untuk selanjutnya setiap file jsp yang anda buat sebaiknya disatukan di dalam folder ini.
  9. Buat file hello.jsp di dalam folder pages
    <html>
     <head><title>Example :: First Spring MVC Application</title></head>
     <body>
     <h1>Example - Spring Application</h1>
     <p>For my nakama.</p>
     </body>
    </html>
    
  10. Terakhir adalah membuat class Controller, buat file HelloController.java pada package com.firstProgram.web
    package com.firstProgram.web;
    
    import org.springframework.web.servlet.mvc.Controller;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import java.io.IOException;
    
    public class HelloController implements Controller {
    
     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
    
     System.out.println("Andreas");
     return new ModelAndView("pages/hello.jsp");
     }
    
    }
    
  11. Coba jalankan aplikasi anda pada server.  Di address bar masukkan alamat berikut: http://localhost:8080/firstProgram/hello.asik.  Hasilnya kira-kira adalah seperti ini.

Daftar Pusataka:

  1. Spring MVC step by step. link

NOTE: mohon maaf sebelumnya karena ada kesalahan pengetikan yang cukup fatal pada saat publish Dec 17, 2010, Dan sudah diperbaiki per tanggal Dec 20, 2010.

Running Command Prompt’s Command from JAVA


Seperti yang anda ketahui, kita dapat menjalan kan command line di dalam JAVA. Sebagai contoh saya ingin men-compress file, saya dapat menggunakan software third party seperti 7zip untuk melakukan proses zipping, sedangkan JAVA hanya sebagai trigger untuk menjalankan command line nya saja.

Kode JAVA yang diperlukan untuk merunning command line kira-kira seperti ini:

public class ZipUtil {

 public static void zipFile(String appPath, String archiveName, String fromDirectory)throws IOException {

String s = null;
Process p = Runtime.getRuntime().exec(appPath + " u " + archiveName + " " + fromDirectory);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

// read the output from the command
//logger.info("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}

// read any errors from the attempted command
while ((s = stdError.readLine()) != null) {
System.out.println(s);

}
}
}

Tapi ada permasalahan disini, jika kita ingin merunning command-command dasar dari command prompt itu sendiri, seperti copy, dir, del, dll akan muncul error.Penjelasan kenapa error ini bisa terjadi ada pada paragraph di bawah ini:

Perlu diketahui saat kita memanggil method getRuntime() dari Class Runtime artinya system harus merunning executable file (ada di dalam parameter) dan tidak ada return value. Saat kita coba menjalankan copy file1 file2 system akan mencoba mencari file copy.exe pada System Path di komputer, jika ada file copy.exe maka file inilah yang akan di execute, dengan file1 dan file2 sebagai parameternya.

Lalu bagaimana caranya untuk merunning command prompt’s command melalui JAVA. Caranya sangat simple, apa nama file executable untuk menjalankan command prompt? Jawabannya adalah command prompt itu sendiri – cmd.exe. Jadi untuk menjalankan command prompt’s command melalui JAVA adalah dengan cara menggunakan command line seperti ini:

cmd.exe /C [command] [parameter1] [parameter2] .. [parameter..]

Concat Two File with Command Prompt


Bagi para pengguna *NIX, pasti sudah familiar dengan fungsi CAT. Secara garis besar fungsi CAT digunakan untuk mem-print isi sebuah file ke dalam terminal.

cat file1

Lalu untuk Join 2 file menjadi 1 file biasanya menggunakan command berikut

cat file1 file2 > file3

Konsep di atas adalah konsep dasar yang akan saya gunakan. Tapi bagaimana cara menerapkannya untuk OS Windows. Khususnya Windows XP – karena saat ini saya asih menggunakan Windows XP sebagai OS. Pada Command Prompt ada command TYPE, yang fungsinya sama dengan command CAT pada *NIX. Untuk selebihnya sama saja syntaxnya dengan di *NIX

type file1 file2 >> file3

Keterangan:

Tanda >> artinya, Jika file3 NOT EXISTS maka akan di create, jika sudah ada maka data yang baru akan di append ke data sebelumnya.

Tanda > artinya, file3 akan direcreate, EXISTS or NOT EXISTS.

Bulk Copy – Export Data From MS.SQL2000


Mau sharing sedikit disini. Kebetulan saya sedang mendapat tugas untuk membuat sistem yang dapat men-download data dari MS.SQL2000. Data yang di-inginkan disini bukan hanya 100 – 200 record saja, tapi sampai ratusan tibu bahkan jutaan record, dengan jumlah field yang ingin ditampilkan mencapai puluhan (dalam case saya mencapai 70 field).

Singkat cerita, pada MS.SQL 2000 terdapat fasilitas yang namanya Bulk Copy. Nah, si Bulk Copy ini bisa menulis hasil query ke dalam file lain (tex, Ms.Excel, dll). Dalam kasus saya ini, saya ingin meng-export hasil query saya ke dalam file Ms.Excel.

Kira-kira syntax yang saya gunakan seperti ini:

Format:

bcp [Database]..[Table] out "[OutputPath]" -S "[ServerName]" -U "[USERID]" -P "[Password]" -c -F [beginRow] -L [endRow]
Example:

bcp Example..simple out "C:\output.xls" -S "Server01" -U "admin" -P "admin" -c -F 1000 -L 2000

Penjelasannya secara singkat seperti ini:

  • [Database]..[Table] –> Tidak perlu menggunakan tanda petik, bisa digantikan dengan query tapi harus ditambahkan dengan tanda petik sebelum dan sesudah syntax.
  • out –> Jika meng-export langsung dari table gunakan out, jika menggunakan query maka syntax nya harus diubah menjadi queryout.
  • -c –> artinya output yang dikeluarkan menggunakan character type ASCII
  • -F –> artinya nomor column untuk memulai ditulis (Minimum 1)
  • -L –> artinya nomor column untuk berhenti menulis, dalam example di atas, output akan menulis Row ke 1000-2000.

Problem berikutnya yang muncul adalah Output yang dihasilkan tidak mempunyai header. Tapi masalah ini juga dapat diselesaikan dengan menggunakan simple trick. Untuk pembahasan simple trick ini, akan saya bahas pada artikle saya yang berikutnya. 🙂

Silahkan dibaca artikel yang ini:

https://andreastjong.wordpress.com/2010/09/21/concat-two-file-with-command-prompt/

Java mail on Exchange Server 2007


Pada artikel kali ini saya coba untuk menjabarkan bagaimana cara untuk mengirimkan email melalui Java. <*reader*>Yah ini mah common banget – cari di internet juga udah banyak contohnya </*reader*>.  Tenang dulu, sesuai dengan judulnya saya juga akan coba bahas common problem yang terjadi pada saat mengirimkan email melalui Echange Server 2007.

1.Pertama – tama saya berikan contoh untuk

 String host = "your mail server";
 String from = "your email";

 Properties props = System.getProperties();
 props.put("mail.smtp.host", host);
 props.put("mail.smtp.user", from);
 props.put("mail.smtp.port", "25");
 props.put("mail.debug", "true");

 //props.put("mail.smtp.auth", "true");
 //String userId = "user01";
 //String userPassword = "password01";

 String[] to = {"your email"};

 Session session = Session.getDefaultInstance(props, null);
 MimeMessage message = new MimeMessage(session);
 message.setFrom(new InternetAddress(from));
 InternetAddress[] toAddress = new InternetAddress[to.length];

 // To get the array of addresses
 for( int i=0; i < to.length; i++ ) { // changed from a while loop
 toAddress[i] = new InternetAddress(to[i]);
 }
 for( int i=0; i < toAddress.length; i++) { // changed from a while loop
 message.addRecipient(Message.RecipientType.TO, toAddress[i]);
 }

 String bodyMessage = "TESTING";
 message.setSubject("EMAIL TESTING");
 message.setText(bodyMessage);

 Transport transport = session.getTransport("smtp");

 try{
//transport.connect(userId, userPassword);
 transport.connect();
 transport.sendMessage(message, message.getAllRecipients());
 transport.close();
 }
 catch(Exception e){
 System.out.println(e.getMessage());
 }
 

Sekarang coba dijalankan dulu syntax di atas. Jangan lupa diliat output nya, untuk men-trace jika ada error. Jika aplikasi ini gagal mengirimkan email ada beberapa hal yang harus anda check:

  • Check apakah PORT 25 di block Firewall tidak
  • Coba check antivirus anda, apakah java.exe sudah masuk ke exception list untuk bagian mail sendernya. (Saya pernah mengalami hal ini pada antivirus Mc Affe)
  • Check Settingan Exchange Server anda. Server Configuration -> Hub Transport -> Default your server. Apakah anonymous nya di check list? Kemungkinan besar anonymousnya tidak di check list, jika hal ini terjadi berarti Security Networking anda hanya mengijinkan pengiriman email oleh user dengan authentikasi.

2. Contoh pengiriman email menggunakan authentikasi, tinggal dibuka comment nya saja. 😉

 String host = "your mail server";
 String from = "your email";

 Properties props = System.getProperties();
 props.put("mail.smtp.host", host);
 props.put("mail.smtp.user", from);
 props.put("mail.smtp.port", "25");
 props.put("mail.debug", "true");

 props.put("mail.smtp.auth", "true");
 String userId = "user01";
 String userPassword = "password01";

 String[] to = {"your email"};

 Session session = Session.getDefaultInstance(props, null);
 MimeMessage message = new MimeMessage(session);
 message.setFrom(new InternetAddress(from));
 InternetAddress[] toAddress = new InternetAddress[to.length];

 // To get the array of addresses
 for( int i=0; i < to.length; i++ ) { // changed from a while loop
 toAddress[i] = new InternetAddress(to[i]);
 }
 for( int i=0; i < toAddress.length; i++) { // changed from a while loop
 message.addRecipient(Message.RecipientType.TO, toAddress[i]);
 }

 String bodyMessage = "TESTING";
 message.setSubject("EMAIL TESTING");
 message.setText(bodyMessage);

 Transport transport = session.getTransport("smtp");

 try{
 transport.connect(userId, userPassword);
 //transport.connect();
 transport.sendMessage(message, message.getAllRecipients());
 transport.close();
 }
 catch(Exception e){
 System.out.println(e.getMessage());
 }
 

Untuk mengirimkan email yang masih ke dalam Local Area Networks saja, seharusnya tidak ada masalah.

3. sekarang coba anda ganti To – nya ke alamat email di luar jaringan anda, misalnya ke gmail atau ke yahoo. Jika tidak bisa terkirim berarti harus ada penambahan beberapa settingan lagi pada Exchange Server anda.

Silahkan melihat referensi berikut:
http://msexchangeteam.com/archive/2006/12/28/432013.aspx