Web

HOW TO : Configure JBoss to follow symbolic links

Jboss, in addition to being an application server also serves static content. We recently ran into an issue where some static content was not displayed when users hit the link. The JBoss server kept spewing 404 errors, stating that the content was not found. On some hair pulling research, we figured out that JBoss, like Apache, does not follow/allow content mapped to a symbolic link.

So for example in your web app, you added a sym link to another directory, where most of your content is stored, Jboss would not show the content, when you go to the link.

Here’s a quick guide to fix this.

  1. Go to the deploy folder of the context you want to configure. For example, if you used the default context, you go to $JBOSS_HOME/server/default/deploy/jboss-web.deployer
  2. Edit the context.xml file and add allowLinking=”true” in the Context (NOTE : This allows Jboss to publish symbolic links on all apps in your application server, if you want to restrict it to just one particular app, you have to edit the context.xml in your specific application folder). Upon adding the option, our context.xml file looked as such



   

   
   org.jboss.web.tomcat.security.RunAsListener

More information on options for the context.xml can be found here

http://www.jboss.org/file-access/default/members/jbossweb/freezone/docs/2.1.0/config/context.html

For the record, Jboss configuration and accompanying documentation is what I call black magic :).. Too many options, too many ways to do the same thing.

Week 6 training and improved charts with Google Charts

Week 6 of the Chicago marathon training and I was again not able to keep up with my mid week runs. Although I did manage to improve the charts displaying the training program :).. I added a new column to compare my actual milege to the recommended milege.

Here are the parameters I used

cht=bvg
chs=400×250
chtt=week+6+Training
chdl=Recommended+Miles|Actual+Miles
chco=ff0000,00ff00
chxt=x,y
chxr=1,0,15
chxl=0:|Mon|Tue|Wed|Thu|Fri|Sat|Sun|
chd=t:0,3,4,3,0,7,0|0,2,0,3,0,0,7
chbh=10

Tracking my runs using Google charts

I wrote a brief blurb, when Google came out with their Google Charts API. The API essentially allows you to represent your data visually by just generating a URL.. I have been wanting to use this in real life for quite some time now and think I finally found a need :). I am going to be tracking my weekly runs with using this API  moving forward.

Here’s a graphical representation of my runs for Week 5 of my traning for the Chicago marathon

Week 5

As you can see, I have been slacking off on my mid-week runs.

I used the following parameters to generate the graph

Type = cht (vertical bars)

Legend = chtt (Week 5 training)

Axis Values = chxl (Mon, Tue, Wed, Thur, Fri, Sat, Sun)

The URL I used to generate the image is http://chart.apis.google.com/chart?chtt=Week+5+Training&chts=FF0000,20&chdl=Miles&cht=bvs&chxt=x,y&chxl=0:|Mon|Tue|Wed|Thu|Fri|Sat|Sun|&chs=300×150&chd=t:0,0,3,0,0,0,10&chco=4d89f9,c6d9fd&chbh=20

I still need to figure out, how to show the values in the image and play with the ratio of the axis.

You can get all the information you need about this API by visiting this link http://code.google.com/apis/chart/

Rooting for the Mozilla team..

I downloaded multiple instances of Firefox 3.0 to support Mozilla’s attempt to set a world record for the most number of downloads in a day!!. Their servers had some problems dealing with the flood of download requests but seem to have stabilized now..Help set the record, but downloading a copy of Firefox 3.0. I have only used it for a hour now, but it is faster when I use Gmail. And it has a ton of new features that I haven’t even started playing with…

HOW TO : Create dynamic pages in WordPress

I have decided to run the Chicago Marathon again this year. But this time, I am running it for a cause. I am raising money for the ASHA foundation, a non profit entity helping to educate the poor and needy in India. As part of the fundraising process, I wanted to share my training information with the folks that are donating for this cause and hence the need for this post.

I was looking into creating a dynamic page in wordpress (the software that powers this blog) that would list all the posts related to my training for the marathon. Google came to the rescue as usual and pointed me to the “InLine Posts” plugin by Aral Balkan.

You can do create a dynamic page by

1) Download the “InLine Posts” plugin from here : http://aralbalkan.com/wordpress

2) Unzip the file and upload the contents to the plugins folder in your wordpress install. It is located in the wp-content folder.

3) Activate the plugin by logging into the admin interface of your wordpress install.

4) Create a new page and add the number of the post you want displayed in the page by listing the post ID in the following format : [[POST_ID]]

Tools of the trade : IBM Page Detailer

I discovered IBM Page Detailer, a tool to analyze web traffic between a client and a server in a graphical format, while listening to the brilliant Steve Sounder’s lecture on “Even Faster Web Sites” from the Google I/O 2008 conference. And credit goes to Ray for posting the list of videos from the Google I/O conference.

Am still playing around with this tool, but it looks like there is a lot of potential here. Rather than acting as a proxy, like most of the HTTP analyzers do, this tool actually places a probe in the clients network stack. And not to mention that it is free to use :).

Tools of the trade : Java application management

We recently launched a new product at work and had to optimize a Java web application hosted in a JBoss application server for performance. The following tools came in rather handy to troubleshoot and analyze the application.

  • Java core dump memory analyzer from SAP. This tool is better than the standard run of the mill heap analyzers since it can handle larger core dumps. The tool is available here.
  • Messadmin : Session information tool by Cedrik Lime. This tool helps you to analyze the sessions on the application server in real time. We were able to install it on the application server without making any changes in our application, other than adding a couple of listners.. In essence, we copied the jar/war files to the application server and edited our application web.xml file to add the following listners
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/applicationContext*.xml,classpath:applicationContext*.xml</param-value>
</context-param>
<filter>
	<!-- MessAdmin Servlet Filter -->
	<filter-name>MessAdminFilter</filter-name>
	<filter-class>clime.messadmin.filter.MessAdminFilter</filter-class>
</filter>
	<filter-mapping>
	<filter-name>MessAdminFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
	<!-- MessAdmin listener -->
	<listener-class>clime.messadmin.core.MessAdminListener</listener-class>
</listener>