Friday 11 June 2010

8.97 WSG Web Services Gateway observations

My first real deep dive into WSG was with 8.98 – where a transaction server is used.  The was on WebSphere too, so all of the MQ queues were also being used to store the messages and assist in the reliability of everything. The TXN server chatted to the enterprise server and used MQQueues to store messages and await the integration server to come and get them.  Once the messages were in a queue, the F90710 message was deleted.  Cool, so reliability ends when the message is put into a Queue.  Nice.

The next step is for anything to come and pop that message out of the txn servers queues.  This is where you have an integration server and the JDE adapters.  The guaranteed events adapter has the ability to read the metadata for the XML doc that is in the MQSeries Queue.  So you just tell that piece where to get some JDE information (so that it can determine DSTR’s for messages etc) and also where to find a txn server.  Then the integration server gets the messages from the txn server, and all is good.

image

A picture is worth 1000 words, so I think that the above basically covers things off.

This is totally different in 8.97 (so it seems).

I’m new to the 8.97 WSG implementation, but it seems that there is no txn server.  All messages flow directly to and from the adapters, without the reliable delivery / queueing mechanism that the transaction server caters for. 

We have a client that is using this for a big web based front end, this calls logic via WSG.  The adapter in WSG calls the JDE business functions which return data eventually back to the website.  This is nice, but this is SINGLE THREADED.  Therefore there might be 20 users on the external website, but when it comes to calling some JDE logic they all connect to a WSG instance which runs all requests in a single thread, which has one session to one call object kernel which is also single threaded.

So if you’re going to build an enterprise solution, don’t use this technology.  I believe things are getting better.  I remember the good old days when a single COM interface would distribute across all your logic kernels and flog the mutithreaded crap out of E1.  Take me back to the good old days.  I’m not an advocate of flat file transfers, but do like scalable solutions.

No comments: