Tuesday, June 27, 2006

A Thing or Two About Struts Framework

Based on my experience while doing my final project, there's a thing or two that we must remember while working using Struts framework.

First of all, please follow the Java coding standards. I've once have an error just because I use first capital letter on an attribute of a class. Eclipse did generate the getter and setter, but somehow the Struts can't recognize them. By changing it to lower case, problem solved. -Case closed-

Secondly, regarding checkbox(es), Struts ONLY sent data when the checkbox is checked. If you have a form with checkbox which checked by default and user unchecked it, somehow Struts doesn't detect the changes. To resolve it, you have to check the parameter using request.getParameter(""). If its value is null, the checkbox is unchecked. Otherwise, the checkbox is checked. -Case closed-

Actually, I still have some problems while using Struts framework. When I try to use struts-config.xml to configure database connection, it yields error code. In my final project, I put the database configuration in MessageResources.properties. I know this one is not good, but hey.. It works :p -guess it's not over yet-

Web Service - jFreeChart Conflict

In my final project, I used jFreeChart to generate a gantt chart. Unfortunately, after I put the jFreeChart library, the web services can not be deployed. After searching in the internet, finally I got the answer. Somehow, one of the files in the jFreeChart library cause the error. The file is "gnujaxp.jar". It's a little bit weird since deleting the files solve the problem without causing new problem. The web services back to normal. It can be deployed successfully. On the other hand, the gantt chart can be generated successfully as well. Everybody's happy now :)

The Final Version of My Final Project

Well, it's been a long time since my last post I guest hehe.. Many things happens during my final project. In short, my final project title becomes "Building Configuration and Monitoring Unified Process Based Software Project". It covers a little about many things, including unified process, Struts framework, and web services.

Here is the abstract of my final project:

During the final project, an integrated tool for configuring and monitoring unified process based software project management is build. The tool being built is called “Fusion”. Configuration on unified process based software project needs to be done based on the nature of unified process which allow user to choose the activities needed for a specific project. On the other hand, project monitoring needs to be done in order to monitor the status of a project. Until this final project, there have not been any integrated tools that can help the configuration and monitoring process.

The features of “Fusion” consist of configuring and monitoring unified process based software project. The configuration feature includes setting the number of iterations, activities which will be done, and artifacts which will be produced and creating new activity, artifact and worker which has not been defined in unified process. The monitoring feature includes setting the planned schedule, setting the actual schedule, and changing artifact’s status. In order to support interoperability with other application, the tool also provides web services feature. Using web services, data exchange can be done in application level on different programming language and platform. The web services features gives information regarding particular project and particular worker on particular project.

In order to build the tool, problem domain analysis regarding unified process, project management, and web services are done. The next step is to analyze, design, implement, and test the tool. Unified process methodology is also used during the tool’s development. “Fusion” is implemented as a web based application being build on Java programming language using Struts framework. To help the implementation of the tool, Eclipse is used as a Java IDE.

Based on testing that has been done, “Fusion” has met the software requirement specification and it can run according to the specified scenarios. “Fusion” can be used to help user to configure and monitor unified process based software project. It can also be used to learn how to configure a unified process based software project as well. Furthermore, monitoring feature on “Fusion” can be extended so that it can monitor cost, relationship between activities, and critical path aspects.

Keywords: unified process, unified process configuration, project monitoring, web services, “Fusion”

Tuesday, March 28, 2006

Imagine The world of Web Services

This day I read an example of application integration using web services. This example is taken from Web Services and Service-Oriented Architecture: The Savvy Manager's Guide by Douglas K. Barry - 2003 - Morgan Kaufmann Publishers

IMHO, this example shows how great application integration could be. Check this out.

The Business Trip
This is the story of C. R. C. R. is short for Connected Representative. C. R. is about to take a business trip that will occur in the not-too-distant future. This trip is much like any business trip. It will involve flying to California from the Midwest, renting a car, and visiting several customers in different cities over 3 or 4 days.

To start his trip planning, C. R. uses his browser to see all the possible customers he could visit within driving distance of his destination city.

Although there are a few customers he knows that he wants to visit, he also wants to make sure he is keeping in touch with as many customers as he can. Using his browser, he selects the three customers that he must visit. C. R. sorts the remaining customers by the number of problems reported in the previous 3 months and by the revenue C. R.’s organization has received from these customers. Using this list, he identifies ten additional customers he might see and they are listed in order of importance according to his chosen criteria. C. R. adds the dates he wants to leave and return and selects the “Submit” button and moves on to working on other things.

A little while later, C. R. receives an e-mail message from his contact at one of the customers saying that dinner on Tuesday would be great, but the customer would need to meet an hour later than C. R. suggested. C. R. opens up his calendar on his browser and adjusts the dinner time already on his calendar and replies to the e-mail message.

Note I am going depart from the story here for a moment. You will note that C. R. did not originally set up the dinner time. This was done for him by the software system. We see how this was done later in this book.


As the day progresses, C. R. gets a few more e-mail messages and he updates his calendar accordingly. Within a few hours, he also receives information on his flights, car rental, and hotel reservations at three cities. C. R. again opens up his calendar on his browser just to check that everything looks okay. The arrangements are fine and he confirms the plans. At this point, his manager receives basic information about C. R.’s trip along with notes on her calendar about when he departs and returns. C. R.’s spouse also receives updates to her calendar that include the departure and return trips along with the hotels where C. R. will be staying and hotel phone numbers inserted in the appropriate days. This is something she likes to have handy when C. R. is traveling.

The day before his trip, C. R. downloads what he needs to his cellular telephone/palmtop computer. This includes the itinerary showing his flights, car reservation, hotel reservations, hotel contact information, details on each customer, a summary of all contacts C. R.’s organization has had with each customer, driving instructions from each stop along the way, and maps. C. R. prints out the driving instructions and maps. He likes to have paper copies just in case his rental car does not have a Global Positioning System (GPS) driving assistant or the GPS doesn’t work properly. C. R. thinks it’s always nice to have a paper map and driving instructions.

When C. R. arrives at his destination airport, he is pleased to see that his rental car has the GPS assistant that his car rental profile requests. He starts the car, and the GPS assistant is already programmed for his first destination that day—one of the customer sites. C. R.’s organization recently switched to this car rental company because they offered this feature. It beats having to punch in destination addresses every time.

Note In this story, it was relatively recently that rental companies agreed on the data and the names to use when describing the data used to transmit itineraries for GPS assistants. C. R.’s organization switched to the new rental company because of this feature, because the new company provided almost the same rates as their previous car rental company.


On his way to his first customer visit, C. R. receives an instant text message on his cellular telephone indicating that someone at this customer just reported a significant problem with one of the products from C. R.’s organization. This is good to know before going into his first meeting. While in the customer’s parking lot before the meeting, C. R. calls the representative who is working on the problem for any additional information before heading into his meeting. C. R. was able to address his customer’s concerns on the spot.

Back out at the parking lot, C. R. sees that he has another instant message telling him that his itinerary has changed on the third day and that he should check his calendar. He takes out his palmtop and logs onto his online calendar, downloading what he needs. He sees that the last customer he wanted to see has canceled (an e-mail message explains why) and that two different customers were added to his trip. This change also necessitated changing hotels. Thankfully, C. R.’s spouse and manager also received the updates to their calendars automatically. The hotel reservations have been changed appropriately, too. When C. R. started his car the following morning, the updated itinerary was also downloaded to his car’s GPS assistant.

Late that night, C. R. was looking over the customer visits for the next day and saw something puzzling in the summary of contacts for one of the customers. For some reason, the same problem appeared to be reported multiple times. He used the monitor and keyboard in his hotel room to get more information on this contact from the online repository that contained all contact information for his organization.

As C. R. meets with customers, he makes notes on his palmtop about each of the meetings. At intervals, his palmtop transmits that meeting contact information and it is added to all the other contact information for each of the customers.

Note By now, you have probably noticed that C. R.’s organization has very current and detailed information on every customer contact. They found that in their industry, this makes a big difference in how well the employees can help their customers. It also identifies any need that the customer may have for additional products or services. This customer information comes from multiple sources, both internal and external to C. R.’s organization.


On the last day of his trip, C. R. receives an instant message in the morning that his flight that afternoon has been cancelled, but that the airline has arranged an alternate flight that will leave an hour later. C. R’s spouse also receives an instant message with the same information. Both of their online calendars were updated to reflect the new arrival time that evening. C. R. also used his palmtop to check any last minute flight changes with his airline.

Friday, February 24, 2006

Creating Web Services Tutorial, JSP - WS in colaboration with Oracle XE, Agile Software Development

It's been a long time since my last post. Well, so far I'm doing the paperwork (including the Proposal revision and Theoritical base).

As I promised before, I have made a tutorial how to create Java web services using Eclipse WTP and Apache Tomcat. The tutorial itself can be downloaded here

Considering others technical problems in my final project, recently I'm doing some exploration on how connecting the JSP and web services to Oracle Express Edition in Eclipse WTP. I'll post the result of my exploration about this technical problems.

On the other hand, considering the Software Development Process, I've just finished read a publication about Agile Software Development Process. It gives brief description about Extreme Programming, Scrum, Crystal family of methodologies, Feature Driven Development, Rational Unified Process, Dynamic Systems Development Method, Adaptive Software Development, and Open Source Software Development. In my humble opinion, I think it's a little bit funny, but it's also interesting, since each methodology can specified the agility of themselves. I did the comparison in order to know about other things that exists besides Unified Process, and if it is possible, I'll try to implement them on my final project. But still, the main focus of my final project is Unified Process.

Monday, January 23, 2006

Java Web Services Implementation using Oracle JDeveloper 10g

Finally I have finished my chapter 2 of my final project documentation. But it's subject to change due to revision from my lecturers. OK, that's not the main reason I post this blog :D

This day, I learned how to implement java web services using Oracle JDeveloper 10.1.2.1.0. Thanks to Arya Adriansyah :) I have successfully implement and publish it using OC4J. First of all, make a new Java class. Then, create a web service based on that class. Finally, publish the web services. Don't forget to install OC4J first (run "{ORACLE_HOME}\j2ee\home\java -jar oc4j.jar -install" from command prompt).

However, regarding the java web services implementation using Oracle JDeveloper 10g Release 3 and Eclipse 3.1.1 WTP, I haven't successfully published them. Maybe it's just a configuration matter, but I don't know. For now, I try to publish it using my own way. First of all, create the WSDL document using the IDE. Edit the WSDL document manually concerning the service location. It is located in "soap:address location" tag. Finally, copy the WSDL file to IIS virtual directory (C:\Inetpub\wwwroot\). I use IIS since I know how it works better than other servers. I know this is not the best way, but it works!

I have also successfully consumed the web services (all of them) using a .NET client. Well, I just pick the fastest way to make the client program. It works well for whether the client program runs on local machine or on remote machine.

Regarding the documentation on analysis, some ideas come from one of my lecturer, Mr. Dwiaji. There are two main focus of my analysis. First, about the project planning and monitoring theory and how it relates with the Unified process. Second, about how to collect data from many places. It will start from the history when everything is done manually until it can be done automatically using web services. I also have to analyze where the web services should resides, whether in server side, client side, or both.

If you have any questions or may be corrections, please contact me :)

Monday, January 16, 2006

Java Web Services Implementation using Eclipse 3.1.1 WTP

Finally, I have succesfully implement Java Web Services using Eclipse 3.1.1 WTP. The tools can be downloaded from here.The one I used is WTP 1.0. My suggestion is download the "all in one" package. It includes the Eclipse SDK as well. About the tutorial, you can see them on this link. Just follow the instructions and you can make your own java web services. For your information, the WTP needs Apache Tomcat installed on your machine. I use Apache Tomcat 5.5.9 which can be downloaded here.

I have also succesfully consume the web services using a .NET program. Now, the main problem is it's a little bit weird that I have to turn on the Apache Tomcat from Eclipse IDE to enable the web services. Probably, it's just a matter of virtual directory settings, I haven't try to fix this problem. If you have any idea, don't be hesitate to contact me.

OK, during the rest of this week, I'll try to finish the chapter 2 of my final project document. If it is possible I'll try the java web services implementation using different IDEs or may be using no IDE at all :D I'll post the result about it.

Friday, January 13, 2006

Web Services Implementation

Well, today I tried the web services implementation in Java. I used both Eclipse 3.1.1 and Oracle jDeveloper 10g Release 3. And guess what.. Until I write this posting, I haven't succeed to implement the Java Web Services in both IDE. It's not as easy as I thought.. Doesn't really matter, it's quite challenging :D

Considering web services implementation in .NET, I have no difficulties at all. It only took less than 5 minutes. I tried to implement it using both Visual Studio .NET 2003 and Visual Studio 2005 Express Edition. Well, I have to agree that .NET is about productivity :) On the other hand, we don't learn much when using .NET. Many things are 'hidden' from developers.

I guess I will spend this week end trying to implement the Java Web Services by using either Eclipse or Oracle jDev.

When I have succeed the implementation, I'll write my experience about it.

Wednesday, January 11, 2006

First Blog

This is my first blog. I'll try to write it down in English, should there any mistake in grammar etc, please forgive me. I'm still learning :)

The main reason I create this blog is to track down my progress during my final project here in Informatics Department Bandung Institute of Technology. The title of my final project is "Implementasi Web Services pada Perangkat Lunak Pengawasan Proyek Bermetodologi Unified Process" or in English "Web Services Implementation in Project Monitoring Software Using Unified Process" (subject to change). So, there are at least two main focus in my final project: web services and unified process. Regarding the implementation of web services, I'll try to combine Java Web Services and .NET Web Services. The combination itself is not limited to web services only. It is possible to have .NET client which consume Java Web Services or vice versa.

Should you have any comments, suggestions, or may be questions, especially in those three areas (Java Web Services, .NET Web Services, and Unified Process), you can contact me via email at de_senta@yahoo.com

Today, I join the Java User Group - Indonesia and NetIndonesia. For the Unified Process, I haven't found any group lately. May be you know some. If it is so, please let me know. Hopefully, I can get a lot of information from those groups. If it is possible, I'll try to contribute in those groups as well.

OK, that's it for today.