Essential Software for Windows

You know the old routine – You get a new machine and then you spend weeks looking for and installing all the applications, tools, utilities, etc that you had on your old computer that made you so productive. There is always that utility that you use once in a while but you just can’t seem to find it.

I recently bought a new computer and decided to make a list of all the software I installed on the new computer so that I’m ready to do this again for my next machine. I wish I had discovered Belarc Advisor before I rebuilt my old desktop as a Linux (Ubuntu) desktop. So here is a fairly complete list of what’s installed on my machine and if you see something that I should have, please leave me a comment:
The Essentials

Development

Audio, Video & Graphics

Browsers & Extensions

Utilities

Webinar> Spring Framework in WebLogic Server 9.2

BEA is hosting a webinar on September 20, which will discuss the existing integration points between WebLogic Server and Spring and what is coming down the pipe for Spring 2.0, WebLogic Server 9.2 and beyond. The webinar will also discuss new technologies introduced with WebLogic 9.2 that support the use of the Spring Framework and how they work with Spring to make your development easier. The webinar will be hosted by Andy Piper, who worked with Rod Johnson and crew to implement the initial Spring support in WebLogic and the MedRec example to illustrate best practices in developing Spring application under WebLogic. The new version of MedRec that’s Spring enabled was re-architected from an EJB-based architecture to a Spring-based architecture for the handling of transactions, data access, and remoting.

BEA Workshop Studio and Ubuntu

I have been following BEA’s acquisition of M7 to see what happens to the NitroX product. We are a big WebLogic shop and so I was curious to see what BEA is going to bake in the new release of NitroX renamed Workshop Studio. The new Workshop Suite is based on the Callisto (Eclipse 3.2 and WTP 1.5) release and is chalk-full of goodies including EJB 3.0 (JPA), Kodo, Spring, JSF (yuck), Struts, JSTL, Hibernate support among other specs/frameworks. Another cool thing in Workshop Studio is the ORM tool that is built-in that allows developers to access databases and build an object relational entity layer to model the data using persistence engine providers that implement the EJB3, JPA, Kodo and Hibernate. Workshop also supports Tomcat, Resin, Jetty, JBoss, and WebSphere in addition to WebLogic.

I am a die-hard IntelliJ IDEA fan and IDEA is still the BEST IDE in the market. IDEA has the best refactoring, smart-type auto completion, code analyzer capabilities and it is really the best IDE for writing code. However, it is missing many of the bells-n-whistles that Eclipse and now NetBeans have. In the last few months, I found myself looking at the NetBeans 5.5 betas and Eclipse 3.2 betas and wondering why IDEA was missing a lot of that functionality. Sun has really turned around NetBeans and the latest 5.5 betas have really rocked. The combination of the Profiler with NetBeans makes it a compelling offering and the price is right.

Guess I am getting off-topic here – So I’ve been playing with the latest release of Workshop Studio and my first impressions are very positive. I am hoping to use it exclusively for a month and then blog about my experiences. I recently upgraded my Linux box to Ubuntu (Dapper Drake) and I’ve been running more than SVN, MySQL, Apache, Tomcat and WebLogic on it. I try to install all of my development tools on my XP and Linux box for consistency and so I was able to install Workshop Studio on my Ubuntu Linux box without any problems. Out of the box, Workshop Studio doesn’t support Ubuntu but the installer does allow you to continue installation and use Workshop Studio. Here are the steps I used to install Workshop Studio:

I’m assuming you already have the 1.5 JDK installed on your box. If you don’t, you can use apt-get to get and install the latest SDK. This article at the Javalobby has a lot more details but here’s all I did for my installation:

sudo apt-get install sun-java5-jdk
sudo update-alternatives—config java
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/
sudo ./WorkshopInstaller.bin

The installer clears the launcher icons in the directory of your choice and you should be all set to use Workshop Studio. On his blog, Bill Roth discusses his experiences of installing Workshop on his Ubuntu box using JRockit. In addition to being a fellow Marquette alum and an all around great guy, Bill is also the vice president of the BEA Workshop Business Unit at BEA Systems. Bill asks the question in his blog entry about BEA officially support Ubuntu in their products and I would have to say a resounding yes to that. Most enterprises use RedHat on their servers but Ubuntu is fast catching up on the desktop side and so BEA should support RedHat and Ubuntu. Cannot wait for the day when I get type in apt-get jrockit, workshop and weblogic.

An Introduction to the Enterprise JavaBeans 3.0 Specification

An Introduction to the Enterprise JavaBeans 3.0 Specification by Vimala Ranganathan and Anurag Pareek — The EJB 3.0 specification goes a long way toward making the EJB programming experience a pleasant one by simplifying development, facilitating test-driven development, and focusing more on plain Java objects. This article takes a look at the specification, and how to build EJBs in the new model.

java, j2ee, ejb, ejb3.0, weblogic, pojo, jsr220, sdo, bea, dev2dev

WebLogic Console for Tomcat vs. Tomcat Probe

At last year’s BEA World, the conference formally known as eWorld, BEA announced the WebLogic Console for Tomcat. This add-in for the WebLogic console is finally here and I can’t wait to try it out. While I love WebLogic and use it for everything production, I do use Tomcat for some simple development tasks or quick POC applications that don’t require transactions or all of the bells-n-whistles of WebLogic.

The administration tools that ships with Tomcat leave a lot to be desired and so this will be a welcome invitation for anyone using Tomcat. The one sticking point is that it will require WebLogic and so this may only be a value-add for people using WebLogic. Since WebLogic developers licenses are free, anyone can download and use WebLogic but I’m not sure a lot of people will rush and download WebLogic, just to use the Tomcat admin console.

Most people that use Tomcat probably use or should really take a serious look at Tomcat Probe. Tomcat Probe is a web application, which is designed to dig into Tomcat internal objects to display invaluable runtime information about deployed applications and Tomcat instance in general. The list of features include:

  • Display of deployed applications, their status, session count, session object count, context object count, datasource usage etc.
  • Start, stop, restart, deploy and updeploy of applications
  • Ability to view deployed JSP files
  • Ability to compile all or selected JSP files at any time.
  • Ability to pre-compile JSP files on application deployment.
  • Display of list of sessions for a particular application
  • Display of session attributes and their values for a particular application. Ability to remove session attributes.
  • Ability to expire selected sessions
  • Graphical display of datasource details including maximum number of connections, number of busy connections and configuration details
  • Ability to reset data sources in case of applications leaking connection
  • Display of system information including System.properties, memory usage bar and OS details
  • Display of JK connector status including the list of requests pending execution
  • Real-time connector usage charts and statistics.
  • Ability to show information about log files and download selected files
  • New! Ability to interrupt execution of “hang” requests without server restart

I understand (and applaud) BEA’s strategy of adoption of open-source tools, products and their commitment to open source software. In addition to supporting open-source initiatives, BEA has also contributed a lot of source-code and intellectual property to the open-source community as well. I know the strategy behind the WebLogic console for Tomcat is to up-convert people from Tomcat to WebLogic and make the migration process easier but the audience for this tool will be a very small and niche group. I guess I count myself in that small group and will install the Tomcat add-in for the WebLogic console – Can’t wait to see how it stacks up against Tomcat Probe.

BEA, WebLogic, Tomcat, weblogic+console, foss, open-source, tomcat+probe

Using the Java Persistence API with Spring 2.0

Using the Java Persistence API with Spring 2.0 by Seth White — The Java Persistence API (JPA) and the version 2.0 release of the Spring Framework form a powerful combination. Author Seth White uses an updated version of BEA WebLogic Server’s medical records sample application to show how Spring 2.0 and JPA can be used with WebLogic Server.

java, persistence, spring, spring2.0, weblogic, bea, medrec, jpa, jsr220, ejb, ejb3.0

Spring Training with Interface21

Last week was an awesome week at work – Well, every week at work is awesome ;) but last week was even more special because we had Keith Donald from Interface21 onsite doing Spring training. If you don’t know Keith, he is a Principal consultant at Interface21 in addition to being the lead of Spring Web Flow project and the founder of the Spring Rich Client Project.

I have been a user of the Spring framework for almost two and half years now. I introduced Spring at work about a year and a half ago and we started off by using Spring’s DAO framework in our data-access layer with great results. As advertised, Spring is very modular and non-intrusive and so we were able to use parts of it, without having to rewrite other aspects of our applications. Over time, we have replaced many of the standard J2EE components with Spring and our use of EJB is now relegated to act as pass-through façade to the service tier hosted inside Spring’s container. The only reason we even have the EJB’s around is to use WebLogic’s servicegen Ant task to expose the EJB as a set of Web Services. The servicegen Ant task takes as input an EJB JAR file or list of Java classes, creates all the needed Web Service components, and packages them into a deployable EAR file which makes it very easy to create Web Services endpoints using your existing code.

My team had different levels of experience with the Spring framework and so we decided to bring in Interface21 for Spring training to make sure everyone in the team was able to leverage all of the features of Spring. Matt and I had the most experience with Spring and so we felt that a lot of the training would be just a review for us but we were pleasantly surprised to know how much more there was to know and learn about Spring. Keith Donald did an incredible job in teaching us the nuances of Spring and the hands-on labs made learning a lot of fun. One of the great things about this class was the off-topic discussions we had with Keith where he was able to share his experiences in using Spring creatively to solve common problems. In addition to teaching us Spring, Keith was gracious enough to put up with 4 days of bitching and whining about Eclipse from all of us IntelliJ IDEA guys.

If you need Spring training, I highly recommend Interface21 – To me, the mark of a great training class is when it gets you so excited that you cannot wait to fire up your IDE to try out all the new things you’ve just learned. And I can tell you that I’ve spent most of Friday and this weekend refactoring a ton of applications to leverage even more of Spring.

spring, spring+framework, spring+training, ioc, interface21, keith+donald, ejb, inversion+of+control, weblogic, training, webflow, intellij+idea, idea, eclipse, tdd

WebLogic’s MulticastTest utility broken

Developers that use WebLogic Server instances that are in a cluster are (or should be) pretty familiar with how servers communicate with one another using multicast and sockets. Multicast or IP multicast is a simple broadcast technology that enables multiple applications to subscribe to a given IP address and port number and listen for messages. The IP/port combination is setup when the cluster is defined and server instances uses multicast for JNDI updates and cluster heartbeats. A WebLogic server uses multicast to broadcast regular heartbeat messages that advertise its availability in the cluster. If you have a cluster in a network segment where multicast isn’t working, you have weird problems.

I recently ran into an issue that took days to fix because the utility provided by WebLogic to debug multicast problems, MulticastTest is broken. As part of a datacenter move, we were moving 2 servers running Linux and WebLogic. In the past, the 2 servers were in 2 different data-centers but were part of the same VLAN, which essentially simulated a subnet. Both servers acted like they were in the same network segment even though they were geographically separated in 2 different data-centers. As part of the move, the VLAN that connected these servers was removed but the routers were configured to move multicast traffic so that the WebLogic server instances running on these 2 servers could see each other and cluster together and offer failover, etc. When the servers were moved and disconnected from the VLAN, weird things started to happen that would cause application hangs, stuck threads, etc. Suspecting a network issue, I fire up the MulticastTest utility on both sides to see if the multicast is working. The syntax is pretty straightforward:

$ java utils.MulticastTest -n server1 -a 224.x.x.x –p 9001

Once you start this on server1, you go to server2 and fire up the same utility with server2 as the name and the same multicast IP/port combination. If multicast is working correctly and the routers aren’t dropping it, server1 should see broadcast from server2 and vica versa. But we didn’t see that and so our network guys spent time figuring out why our routers weren’t routing that traffic over. After some configuration changes and new IP range that wasn’t using the obsolete RIP range, I got the all-clear to try again. So I fire up the MulticastTest utility again and server1 still couldn’t see server2. So the network guys try again and they still no issues and we cannot figure out why the test utility is not working. After spending hours on that, we decide to just fire up the WebLogic server instances on server 1 and 2 and guess what: multicast is working. WebLogic server instances on server1 see server1 and 2 and vice versa – WTF. So I try the MulticastTest utility and it’s still not working. I made the assumption that the MulticastTest utility would be using the same codebase as the WebLogic server but I guess it’s not as the utility is broken. Another issue is that the MulticastTest utility does not let you specify the multicast TTL (time-to-live) and that may be the issue on a WAN. I’ve submitted this as a bug to support and hope they fix it in the next service pack. (The version of WebLogic involved here is WebLogic 8.1 SP4).

WebLogic, cluster, multicast, vlan