Halogen made its debut at MySQL conference today. It took a bit of
hacking to get it to build and run, with Will's help, but I was able
to get it running with both mondrian and XMLA drivers. (A mere 20
minutes before the presentation started!!)
The demo was an awesome proof of the concept that an olap4j viewer can
run unchanged against multiple servers. Kudos to you all for getting
it to this stage.
A few comments about what I had to hack to make it work.
I had to hack the Halogen-compile and Halogen-launch scripts for
windows. There were o/s differences (such as the -XstartOnFirstThread
option and the name of the gwt jar). The main problem was that the
third-party jars were missing from the class path. I could replace
these with an ant script with 'compile' and 'launch' targets (among
others) that would run on all platforms. I would be happy to
contribute this build.xml - unless you have other plans to improve the
out-of-the-box build process - let me know.
I added the line
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver") to the code.
This probably does not need to be added permanently - I plan to make
olap4j drivers self-registering (see olap4j bug 1879400 "xmla driver
should self-register per JDBC 4.0",
http://sourceforge.net/tracker/index.php?func=detail&aid=1879400&group_id=168953&atid=848534
)
One minor bug. During the demo, while using the XMLA driver, I added
the Customers dimension to rows. I got an OutOfMemoryException. I
think that this is because Customers is a larger dimension, and
surmise that Halogen was loading all members, even though only one
level at a time is needed to populate the tree. The olap4j XMLA driver
probably shares the blame for using too much memory per member.
For the record, the two connect strings I used were
jdbc:mondrian:Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=c:/open/mondrian/
demo/FoodMart.xml
jdbc:xmla:Server=
http://localhost:8080/mondrian/
xmla;PROVIDER=Mondrian;Catalog=FoodMart
and I hacked my datasources.xml a little:
-
<DataSourceName>Provider=Mondrian;DataSource=MondrianFoodMart;</
DataSourceName>
+ <DataSourceName>MondrianFoodMart</DataSourceName>
-
<DataSourceInfo>Provider=mondrian;Jdbc=jdbc:oracle:thin:foodmart/
foodmart@//
marmalade.hydromatic.net:1521/
XE;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=oracle.jdbc.OracleDriver;Catalog=/
WEB-INF/queries/FoodMart.xml</DataSourceInfo>
+
<DataSourceInfo>Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=c:/
open/mondrian/demo/FoodMart.xml</DataSourceInfo>
Julian