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.

Thursday, March 27, 2008

Perfection

Perfection kills innovation

Sunday, March 16, 2008

Hibernate and BI

Business Intelligence (BI) requires a star schema for efficient analytics. (the difference between analytics and reporting is that reporting requires you to know up front what you want to report and analytics allows you to do ad-hoc reporting). BI operates in most cases from a data warehouse based on star schemas to allow fast and time-based (historical) reporting. Reporting from the operational data sources would jeopardize the transactional/operational systems and in most cases does not allow for historical reports.

An ordinary application based on a persistence engine like Hibernate uses obviously an operational schema - making analytics hard. It would be nice to let Hibernate also update a data warehouse - similar to updating the indexes for text based retrieval.

So when a transaction is comitted, a message (asynchronously) is send to a component that updates the data warehouse. Each operation has a time stamp - allowing time based reporting. You could even use the data warehouse as a kind of trash bucket to restore data that has been deleted inadvertently.

To summarize; the application has three data sources; operational, warehouse and text-indexes.
An application in this way allows for text based search and analytics reports.

Wednesday, March 5, 2008

Tomcat as Windows Service

To install Tomcat5 as a service follow the "Windows service HOW-TO" instructions on the Apache Tomcat side.

Calling Tomcat5 //IS//MyServiceName blabla will create an entry in the Windows registry located at:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyServiceName

The new installed service when started does a call back to tomcat5.exe specifying the service name and the start parameter.

With tomcat5w //ES//MyServiceName you can monitor the service. Bit similar to the Windows Services application, but it has more functionality like specifying the log level and log location.

In my case the service did not start and I had an error in the log:

[2008-03-05 15:55:24] [443 javajni.c] [error] FindClass org/apache/catalina/startup/Bootstrap failed
[2008-03-05 15:55:24] [997 prunsrv.c] [error] Failed loading main org/apache/catalina/startup/Bootstrap class
[2008-03-05 15:55:24] [1260 prunsrv.c] [error] ServiceStart returned 3

So a classpath problem. I re-read the instructions and I noticed that the remark " If using tomcat5.exe, " put me on the wrong foot. I thought service.bat applied to versions prior 5. Appearently this is not the case because running service.bat worked fine. Looking into the content of service.bat I noticed that there is some classpath manipulation and after installing the service, the service is also updated with JVM options so this way is superior as to the excerpt installing Tomcat5. (In hindsight I completely misinterpreted this)


Deleting the service using //DS removes the entry from the registry.