Thursday, August 12, 2010

Debugging techniques

Here are some debugging techniques which will be help full for java buddies.

1st the basic one putting system outs. This is not a good practice but if you don’t have any other way to check it then this might be the only option. But the most important thing is make sure to remove these system outs in the production code.

2nd instead of system outs you can use a logging tool like log4J. Using its functionalities you can put debug level logs and check the logging files. Here if you use good pattern for logging you can find all most all information you want to know. Like Class, line number, time and others.

3rd debug using the IDE. This will help to identify how the code works for each different scenario which you can do with your system. There are lots of features available to understand the behavior of the code. But some times you might have a problem if you are dealing with a multi-thread application. Because if different thread access you debugging point; you might be disconnected or mislead by it. So in those cases 2nd approach will be helpful. You can find more information related to this in your favorite IDE related documents.

4th Remote deguging. This is like 3rd but you can debug and application running remotely. For this what you have to do is enable debugging on the remote application. To enable this you have to pass Parameters to JVM saing which port is available to remote access. After you enable it what you have to do is connect to remote port using local code base and debug it.

Tuesday, April 6, 2010

Speed Broadband for Firefox

Here's something for broadband people that will really speed Firefox up:


* Type "about:config" into the address bar and hit return. Scroll down and look for the following entries:

network.http.pipelining
network.http.proxy.pipelining
network.http.pipelining.maxrequests

Normally the browser will make one request to a web page at a time. When you enable pipelining it will make several at once, which really speeds up page loading.

* Alter the entries as follows:
Set "network.http.pipelining" to "true"
Set "network.http.proxy.pipelining" to "true"
Set "network.http.pipelining.maxrequests" to some number like 30. This means it will make 30 requests at once.
* Lastly right-click anywhere and select New-> Integer. Name it "nglayout.initialpaint.delay" and set its value to "0". This value is the amount of time the browser waits before it acts on information it recieves.
If you're using a broadband connection you'll load pages MUCH faster now..

This really work for me.

Saturday, May 9, 2009

Spring PropertyPlaceholderConfigurer

Here is the code to use PropertyPlaceholderConfigurer with XMLBeanFactory

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("test.xml"));
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new ClassPathResource("jdbc.properties"));
// now actually do the replacement
cfg.postProcessBeanFactory(factory);
MyBean bean = (MyBean)factory.getBean("myBean");
System.out.println(bean .getProperty());

Thursday, May 7, 2009

Struts common configurations

<!-- Standard Action Servlet Configuration (with debugging) -->

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>2</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>2</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

Wednesday, February 11, 2009

Eclipse class change error

While I am using Eclipse I got this error few times and do lots of things finally I clear my eclipse Workspace it works.

Sunday, December 21, 2008

Unit testing with mocking (JMock)

After a long time I thought to write again in my blog :). Because I got a good experience by writing unit tests with mocking (hoping to share it with you all).
Earlier what I did was try to write Unit testing with using all other 'Active' services. Here what I meant from this 'Active' is, with out using Mock objects I used real EJB and other services. Actually it was a very cruel and bad practice( what I am thinking now :), and it is Integration testing not unit testing :) ). Because if there is a problem with the services which we used, our time will waste on that. ( Remember here I am talking about Unit Testing not about Integration Testing). And if you have to work in a an existing system where you are a new fellow for it, You have to think and understand those other services which will be more time consuming. (Again I am totally agree with you if u say it is good to understand those services as well but first thing is we have to write a correct code.. keep in mind Unit Test).

So a Best thing is Mocking the all other dependent services and test our code as a single Unit. When all the unit tests are passing correctly we know that our single unit is working expectedly.

To mock our dependent services we use Jmock http://www.jmock.org/jmock1.html. It will make our life more easier. These were minor issues but still I think its very good for Unit Testing.

Expecting your comments...