Tuesday, November 18, 2008

Web application configuration on Tomcat using Spring

In order to get two sets of independent configuration (property) files, one for development and one for production, one can do the following:

In the web-inf folder place a property file, e.g. act.properties
In the applicationContext.xml define:




WEB-INF/act.properties
file:///${CATALINA_HOME}/act.properties



Thursday, November 6, 2008

Birt versus Jasper Reports

My experiences as a new user with Birt and Jasper.

Birt
  • A report grouped by week done within a one - two hours
  • Built-in support for group-by week (special function)
  • Adding JDBC drivers is easy

Jasper
  • I get hopelessly lost in the NetBeans based IDE. I do not understand how to use the query builder and the report builder.
  • Trying to build a report with group-by week is hard. No built-in support for weeks, just the standard java.util.timestamp functions. Trying to build an expression using day() results in weird validation errors (cannot cast from int to Integer()). With 1.5 you should not get this error anyway. Adding cast does not help. Bottom-line I do not understand the problem and the tool is not helping me to solve it.
  • NetBeans based IDE looks a lot sharper as the 3.0 classic IDE.
  • Selecting a SQL Server JDBC driver from dropdown result in classnotfound exception, you can select the driver, but it is not delivered with the product. You need to add your own drivers. Very confusing
  • A report needs to get compiled. Makes it harder to work with. Probably results in better performance but should be optional.

Thursday, September 11, 2008

VB6 & REST

I want to call a REST service from my VB6 Macro. This page describes how to do this using IE 6 COM objects, instead of needing to install the MS SOAP Toolkit (if it is still available)

It will probably also work for IE 7 since the difference between the two is small. Anyway something to verify.


In case the original page gets lost:

' Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")

' Load XML
objDom.async = False
objDom.loadXML XmlBody

objXmlHttp.open "POST", AsmxUrl, False

objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl

objXmlHttp.send objDom.xml

strRet = objXmlHttp.responseText

Set objXmlHttp = Nothing

' strRet contains result

Wednesday, August 13, 2008

Evaluation criteria Java Library

Evaluation criteria I suggest:
- maturity of the product; years in service,
- size of the community, popularity among developers, documentation
- feature set and what is missing
- how easy to extend
- rate of new releases
- stability, performance, scalability
- integration with other 3rd party libs (e.g. Spring, Hibernate, ActiveMQ, GWT, etc)
- (commercial) support
- license
- Readability / ease of use of the configuration files

Thursday, July 3, 2008

Partitioning

Partitioning is a very import aspect of software development; you need to partition the application into several parts; modules, classes, units, whatsoever. Dividing the work among people is also partitioning. Choosing the right partitioning is about trade-offs.

It stroke me during my vacation that a landmass like Europe is also partitioned; it is divided into countries. It took a couple of thousand of years and a lot of fights, but finally we have a stable partitioning of land. In a way it is a self organizing system.

Thursday, April 3, 2008

RBAC versus ACL

RBAC stands for role-based access control
ACL stands for access control list

RBAC adds an indirection level - role.