
WebChart physical architecture
As the middle layer, Kaiser chose BlackWidow/Visigenic ORB. The developers used jdbcKona to access an SQLServer database, which is used to store user preferences and code-translation tables. The CORBA servers retrieve data from several mainframe dataservers, splice the information together, perform any necessary code substitutions, then pass the appropriate data on to the client.
Shaw says Kaiser chose the Visigenic ORB because it "provided us with support for failover, load balancing and an infrastructure for registering and discovering services -- all of which we did not have to write." He adds that "there were also several other groups within Kaiser that needed the same clinical data we needed, and it made sense to create servers that others could access in an open-standards way to get the data in the normalized form a client would want it."
The team developed in JDK 1.0.2, and continued doing so even after JDK 1.1 was introduced, because with such a non-standardized client environment the developers needed to assume the lowest common denominator in terms of browser support. As of this writing, they were beginning to migrate to JDK 1.1. With the exception of the 3270 emulator, which was purchased from WebConnect, most of WebChart was developed in Symantec Café 1.5, the predecessor to Symantec's Visual Café. Shaw still speaks fondly of Café, noting that despite the youthful bugginess that plagued first-generation tools like Café, BlackWidow and MIGrid, they were all very usable. Although he uses Visual Café today, Shaw contends that Café's no-frills, lightweight quality gave it certain advantages over the larger, more ungainly packages offered today like Visual Café or JBuilder.
"We experienced all of the now well-documented challenges of developing in Java," said Shaw. "For example: repainting problems with the AWT, the intrusive nature of the garbage collector, the different z-ordering of different JVMs, the idiosyncrasies of the many Netscape, IE and HotJava JVMs.
"We lived writing once and debugging everywhere. We suffered through the poor, but improving, performance of the JVMs and the challenges of debugging a multithreaded front end."
Kaiser developers also ran into the problem of Java's poor support for printing, and so used a workaround that involved creating a HTML file on-the-fly for the data they wanted printed and displaying the HTML in a separate window that users could then print using the browser. They chose not to "write" the file to the server's hard disk, but instead kept the file in a hashtable on the server and removed it when it was no longer needed.