Friday, February 9, 2007

Mongrel 1.0.1 + Rails 1.1.6 + Ruby 1.8.5

Try to deploy the application in FreeBSD with the combination mentioned, amazingly.... SLOW.... I don't know what's wrong with it, the Mongrel cluster making the system overhead when process only one single simple request, what's wrong with the latest version?? I switch back to Mongrel previous stable version, it performing very good.

Sunday, February 4, 2007

Spring IoC Learning Note 1 - Hello World

recently start to study springframework.org; The Spring Framework (or Spring for short) is an open source application framework for the Java platform (Definition from Wikipedia). It introduce the so-called 'lightweight framework' to Java world to be an alternative of the 'heavy-weight framework' like Enterprise JavaBean.

first step, write hello world.



//MessageProvider.java
package org.nixeon.ioctest;

public interface MessageProvider {
public String getMessage();
}



//MessageRenderer.java
package org.nixeon.ioctest;

public interface MessageRenderer {
public MessageProvider getMessageProvider();
public void setMessageProvider(MessageProvider mp);

public void render();
}



//HelloWorldProvider.java
package org.nixeon.ioctest;

public class HelloWorldProvider implements MessageProvider {

public String getMessage(){
return "Hello World!";
}
}



//HelloWorldRenderer.java
package org.nixeon.ioctest;

public class HelloWorldRenderer implements MessageRenderer {
private MessageProvider messageProvider;

public void setMessageProvider(MessageProvider mp){
messageProvider = mp;
}

public MessageProvider getMessageProvider(){
return messageProvider;
}

public void render(){
System.out.println(messageProvider.getMessage());
}
}


Use XML beans definition to inject the collaborator.

<!--messenger-meta.xml-->
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="renderer" class="org.nixeon.ioctest.HelloWorldRenderer">
<property name="messageProvider">
<ref local="provider"/>
</property>
</bean>

<bean id="provider" class="org.nixeon.ioctest.HelloWorldProvider"/>
</beans>

So, lets get the Bean!!


//Messenger.java
package org.nixeon.ioctest;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

import org.nixeon.ioctest.MessageRenderer;

public class Messenger {
public static void main (String [] args) throws Exception {
BeanFactory factory = getBeanFactory();
MessageRenderer mr = (MessageRenderer) factory.getBean("renderer");
mr.render();
}

private static BeanFactory getBeanFactory() throws Exception {
BeanFactory factory = new XmlBeanFactory(new FileSystemResource(
"messenger-meta.xml"));
return factory;
}
}


Use ant to run the task

Buildfile: build.xml

run:
[java] Feb 4, 2007 5:01:38 PM org.springframework.core.CollectionFactory
[java] INFO: JDK 1.4+ collections available
[java] Feb 4, 2007 5:01:38 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
[java] INFO: Loading XML bean definitions from file [D:\java_workspace\ioctest\messenger-meta.xml]
[java] Hello World!

BUILD SUCCESSFUL
Total time: 1 second


Done :-)