Daily Archives: April 25th, 2013

Mengambil Konfigurasi dari File Properties

Pada posting sebelumnya saya telah membahas tentang bagaimana cara menyimpan konfigurasi di file properties. Pada posting kali ini, saya akan membahas tentang bagaimana cara mengambil konfigurasi dari file properties. Lets Begin….


package com.yudi;

import java.io.File;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class AppLoadConfig {

public static void main(String[] args) {

 PropertiesConfiguration config = new PropertiesConfiguration();

 File file = new File("/home/yudi/log/yudi.properties");
 try {
 config.load(file);
 } catch (ConfigurationException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

// mengambil data property dari file properties
 String nama = config.getString("name.anda");
 String jenkel = config.getString("jenis.kelamin");
 String status = config.getString("status.kawin");


 System.out.println("nama = " + nama);
 System.out.println("jenkel = " + jenkel);
 System.out.println("status = " + status);

}
}

Output…


nama = Yudi Wira
jenkel = laki tulen
status = kasih tau gak ya...

Simpan Konfigurasi di File Properties

Pada posting ini saya akan sedikit men-demokan bagaimana cara menyimpan konfigurasi di file properties menggunakan library Apache Common Configuration. Lets Begin…

terlebih dahulu download library Apache Common Configuration


package com.yudi;

import java.io.File;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class AppSaveConfig {

public static void main(String[] args) {

 //obyek configurasi
 PropertiesConfiguration config = new PropertiesConfiguration();

 //set propertinya
 config.setProperty("name.anda", "Yudi Wira");
 config.setProperty("jenis.kelamin", "laki tulen");
 config.setProperty("status.kawin", "kasih tau gak ya...");

 //save configurasi ke file
 File file = new File("/home/yudi/log/yudi.properties");

 try {
 config.save(file);
 } catch (ConfigurationException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

 }
}

Outputnya…


name.anda = Yudi Wira
jenis.kelamin = laki tulen
status.kawin = kasih tau gak ya...

Tutorial ActiveMQ + Spring JMS + Maven + Log4j Part II

Setelah pada posting sebelumnya Tutorial ActiveMQ + Spring JMS + Maven + Log4j Part I kita telah membuat projectnya di Eclipse, pada postingan ini kita akan men-setting queue di ActiveMQ. Lets Begin….

1. Jalankan ActiveMQ

yudi@YudiMint /opt/apache-activemq-5.8.0/bin $ sudo ./activemq start

2. Web Console ActiveMQ

Akses web console activeMQ di url

http://localhost:8161/admin

home activeMQ

3. Buat Queue ActiveMQ

1. Klik menu Queues

2. Lalu masukkan nama queue di kolom name lalu klik button Create

queue

4. Testing Application

1. Jalankan Project SpringMQ yang tadi telah kita buat dengan Server Tomcat 7.

2. Pada Web console Active MQ di menu Queues, pada queue IncomingQueues klik Operations Send To maka akan muncul window seperti gambar dibawah. Tentukan berapa jumlah message yang akan dikirim, disini saya akan mengirim 100 message dengan isi messagenya Test Message. Lalu klik button Send

send msg

3. Coba refresh browsernya dan akan terlihat kalau IncomingQueues telah mengirim message ke OutgoingMessages. lihat gambar dibawah ini

result

That’s a wrap… demikian tutorial yang singkat ini. mohon maaf jika ada yang tidak berkenan dihati….

any comment will be appreciate….

Refference : google.com

Tutorial ActiveMQ + Spring JMS + Maven + Log4j Part I

Setelah postingan sebelumnya membahas cara install ActiveMQ di Linux. Pada kesempatan kali ini saya akan memberikan tutorial implementasi ActiveMQ dengan menggunakan Spring JMS. Lets Begin…

1. Tools yang digunakan

  1. Apache ActiveMQ
  2. Spring JMS
  3. Apache Maven
  4. Log4j

Project Structure

projectStructure

2. Project Dependency

Tambahkan dependency activeMQ, Spring dan Log4j di pom.xml

File:pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.yudi</groupId>
 <artifactId>SpringMQ</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>SpringMQ Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <properties>
 <releaseCandidate>1</releaseCandidate>
 <spring.version>3.1.1.RELEASE</spring.version>
 <java.version>1.5</java.version>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <maven.javadoc.reporting.version>2.7</maven.javadoc.reporting.version>
 <commons.logging.version>1.1.1</commons.logging.version>
 <log4j.version>1.2.16</log4j.version>
 <context.path>spring-activemq-sample</context.path>
 </properties>
 <dependencies>
 <dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>${log4j.version}</version>
 </dependency>
 <dependency>
 <groupId>org.apache.activemq</groupId>
 <artifactId>activemq-all</artifactId>
 <version>5.1.0</version>
 <scope>compile</scope>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jms</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-aspects</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>servlet-api</artifactId>
 <version>2.4</version>
 </dependency>
 </dependencies>
 <build>
 <finalName>SpringMQ</finalName>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-war-plugin</artifactId>
 <configuration>
 <warName>${context.path}</warName>
 </configuration>
 </plugin>
 </plugins>
 </build>
</project>

3. OutgoingMessageSender

File:OutgoingMessageSender.java


package com.yudi.jms;

import javax.jms.JMSException;
import javax.jms.Queue;

import org.apache.log4j.Logger;
import org.springframework.jms.core.JmsTemplate;

public class OutgoingMessageSender {

private static final Logger LOG = Logger.getLogger(OutgoingMessageSender.class);

 private JmsTemplate jmsTemplate;
 private Queue queue;

 public void sendMessage(String message) throws JMSException {
 LOG.info("Message yang akan di taruh di queue. Queue[" + queue.toString() + "] Message[" + message + "]");
 jmsTemplate.convertAndSend(queue, message);

 }

 public void setJmsTemplate(JmsTemplate jmsTemplate) {
 this.jmsTemplate = jmsTemplate;
 }

 public void setQueue(Queue queue) {
 this.queue = queue;
 }
}

4. IncomingListener

File:IncomingListener.java


package com.yudi.jms;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.management.JMException;

import org.apache.log4j.Logger;

public class IncomingListener implements MessageListener {

private OutgoingMessageSender outgoingMessageSender;

private static final Logger LOG = Logger.getLogger(IncomingListener.class);

public void setOutgoingMessageSender(
 OutgoingMessageSender outgoingMessageSender) {
 this.outgoingMessageSender = outgoingMessageSender;
 }

public void onMessage(Message message) {
 // TODO Auto-generated method stub
 LOG.info("Terima message dari queue" + message);

if (message instanceof TextMessage) {

try {
 String msgText = ((TextMessage) message).getText();
 LOG.info("proses message " + msgText);

outgoingMessageSender.sendMessage(msgText);
 } catch (JMSException e) {
 // TODO: handle exception
 LOG.info("Error :" + e.getMessage());
 }
 } else {
 String errMsg = "Message Salah";
 LOG.error(errMsg);
 throw new RuntimeException(errMsg);
 }
 }

}

5. Spring Configuration

Buat spring configurationnya.

File:spring-config.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:jee="http://www.springframework.org/schema/jee"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/jee
 http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">

<jee:jndi-lookup id="mqConnectionFactory" jndi-name="java:comp/env/jms/mqConnectionFactory" />
 <jee:jndi-lookup id="incomingQueues" jndi-name="java:comp/env/jms/incomingQueues" />
 <jee:jndi-lookup id="outgoingQueues" jndi-name="java:comp/env/jms/outgoingQueues" />
 <bean id="incomingListener" class="com.yudi.jms.IncomingListener">
 <property name="outgoingMessageSender" ref="outgoingMessageSender" />
 </bean>

<bean id="outgoingMessageSender" class="com.yudi.jms.OutgoingMessageSender">
 <property name="jmsTemplate" ref="jmsTemplate" />
 <property name="queue" ref="outgoingQueues" />
 </bean>

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
 <property name="connectionFactory" ref="mqConnectionFactory" />
 </bean>

<bean id="yudiMessageListenerContainer"
 class="org.springframework.jms.listener.DefaultMessageListenerContainer">
 <property name="connectionFactory" ref="mqConnectionFactory" />
 <property name="destination" ref="incomingQueues" />
 <property name="messageListener" ref="incomingListener" />
 <property name="concurrentConsumers" value="4" />
 </bean>

</beans>

6. Context Configuration

File:context.xml


<Context>

<Resource name="jms/mqConnectionFactory"
 auth="Container"
 type="org.apache.activemq.ActiveMQConnectionFactory"
 description="JMS Connection Factory"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
 brokerURL="tcp://localhost:61616" />

<Resource name="jms/incomingQueues"
 auth="Container"
 type="org.apache.activemq.command.ActiveMQQueue"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
 physicalName="IncomingQueues"/>

<Resource name="jms/outgoingQueues"
 auth="Container"
 type="org.apache.activemq.command.ActiveMQQueue"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
 physicalName="OutgoingQueues"/>

</Context>

7. Log4j

File:log4j.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
 <appender name="console" class="org.apache.log4j.ConsoleAppender">
 <param name="Target" value="System.out" />
 <layout class="org.apache.log4j.PatternLayout">
 <param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n" />
 </layout>
 </appender>

<!-- File Appender -->
 <appender name="file" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="/home/yudi/log/springMQ.log"/>
 <param name="MaxFileSize" value="10000KB"/>
 <param name="MaxBackupIndex" value="20"/>
 <layout class="org.apache.log4j.PatternLayout">
 <param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n" />
 </layout>
 </appender>

<logger name="org.springframework.beans">
 <level value="warn" />
 </logger>

<logger name="org.springframework.web">
 <level value="debug" />
 </logger>

<logger name="com.yudi.jms">
 <level value="debug" />
 </logger>
 <!-- Root Logger -->
 <root>
 <priority value="info" />
 <appender-ref ref="file" />
 </root>

</log4j:configuration>

8. Web.XML

File:web.xml


<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <display-name>Archetype Created Web Application</display-name>
 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>
 /WEB-INF/config/spring-config.xml
 </param-value>
 </context-param>

<!-- Loads the Spring web application context using the config file defined
 above. -->
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
</web-app>

Bersambung ke posting selanjutnya…

Install Active MQ di Linux

Pada posting kali ini saya akan mencoba berbagi pengalaman saya pada saat menginstall apache activeMQ di kompi ane yang kebetulan menggunakan OS Linux. Tidak usah berlama – lama langsung kita mulai….

Step 1. Download Apache Active MQ

1. Download disini Apache ActiveMQ

Step 2. Extract File

1. Extract file yang sudah di download tadi ke folder yang kamu inginkan. kalau saya memindahkan file nya ke /opt. Ketikkan perintah berikut :

  yudi@YudiMint /opt $ sudo tar -zxvf /media/Data/SoftwareLinux/apache-activemq-5.8.0-bin.tar.gz  

2. Jika ActiveMQ startup tidak executable, ganti permissionsnya

 chmod 755 activemq 

Step 3. Run Apache ActiveMQ

1. Jalankan Apache ActiveMQ

 sudo sh activemq start 

 

 yudi@YudiMint /opt/apache-activemq-5.8.0/bin $ sudo ./activemq start
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /home/yudi/.activemqrc)

INFO: Invoke the following command to create a configuration file
./activemq setup [ /etc/default/activemq | /home/yudi/.activemqrc ]

INFO: Using java '/usr/lib/jvm/jdk1.6.0_29/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/opt/apache-activemq-5.8.0/data/activemq-YudiMint.pid' (pid '4194')
yudi@YudiMint /opt/apache-activemq-5.8.0/bin $

Step 4. Test ActiveMQ

1. Default port ActiveMQ adalah 61616

netstat -an|grep 61616
yudi@YudiMint /opt/apache-activemq-5.8.0/bin $ netstat -an|grep 61616
tcp6       0      0 :::61616                :::*                    LISTEN
yudi@YudiMint /opt/apache-activemq-5.8.0/bin $

Step 5. Monitoring ActiveMQ

1. Untuk activeMQ versi 4.x keatas, anda bisa memonitor activeMQ di webconsole yang bisa anda akses di alamat

http://localhost:8161/admin

Username = admin
Password = admin

Encrypt + Decrypt Menggunakan Jasypt

Pada Posting kali ini penulis memposting bagaimana cara encrypt / decript menggunakan jasypt. kalau dahulu kita melakukan encrypt harus belajar kriptografi, Java aja udah susah apalagi belajar kriptografi. tapi itu dulu… sekarang sudah ada frameworknya yaitu Jasypt. penggunaan jasypt ini tergolong mudah, tanpa basa basi lagi lets begin….

1. Contoh encrypt/decrypt Jasypt

sebelum memulai koding, download dahulu library Jasyptnya

jasypt-1.9.0.jar

jika anda menggunakan apache maven, silahkan tambahkan dependency nya di pom.xml


<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.0</version>
</dependency>


package com.yudi.jsypt;

import org.jasypt.util.text.BasicTextEncryptor;

public class TesMain {

private static void encryptedPass(String test) {

BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword("gilelundro");
String encryptedPass = encryptor.encrypt(test);
String plainText = encryptor.decrypt(encryptedPass);
System.out.println("Encrypted : "+encryptedPass+" Plain Text ="+plainText);
}
public static void main(String[] args) {
encryptedPass("Tes dulu ya....");
}
}