SOA Governance isn’t about technology either…

Steve Jones summarises a few of the points from a recent ICSOC 2007 debate on SOA Governance and mentions some enforcement ideas in his recent Service Architecture – SOA: SOA Governance isn’t about technology either… article. He makes a good point about people and process.

In the same way that the Rules of the Road is not about what car you drive but about your behaviour and the behaviour of other road users. The reason we have Rules of the Road is because we know, and people recognise, the cause and effect of accidents as well as traffic chaos.

Highlighting SOA anti-patterns (e.g. IBM Article, SOA anti-patterns book) is a good start in bringing to people’s attention poor ‘driver behaviour’. However, as governance is really a business, rather than technical issue, and the business should be the ‘driver’, we also need a higher level exposition (ala Who moved my cheese?) of good business practice around ‘doing IT right’. Any volunteers?

Right sizing the QA environment

Although clearly embarrassing for Canada Bell the QA and User Acceptance environment for their Solo discount ad campaign did not match (i.e. literally reflect in scale) the production environment. This is something that happens in IT too, a lot more often than it should. I have come across a number of banking system implementation projects over the years that do not QA on an environment reflecting production. These are simple things to get right:

  • Use the same network load balancers
  • Use the same cluster configuration
  • Use the same data

The latter criterion obviously requires a lot of effort, particularly when implementing new functionality. High volumes of data and concurrent users is not just for PSR testing! It is an over simplification, but PSR is there to tell you about capacity not quality.

Thankfully, most of the banks (big and small) I have worked with have put in place a ‘pre production’ environment which allows you to work with a copy of real data which may only be a week or two old. To not do so is really naive and in the long run is asking for trouble. It’s worth the effort to find issues with quality before your customers tell you about it when they come in to close their accounts.

Embedded Oracle on OTN TechCasts

At about the same time I was putting together an article on Oracle Lite and the SOA Suite there was an OTN TechCast published where Justin Kestelyn talks with Mike Olson, VP Embedded Technologies at Oracle. Mike was formerly the CEO of Sleepycat Software Inc. which was acquired by Oracle in 2006. In this discussion he gives a great overview of the range of embedded product options from Oracle.

Press the play button to listen to Focus on Embedded Technologies: Embedded Oracle
http://www.odeo.com/flash/audio_player_standard_gray.swf

ModuleException http:101216 on WebLogic

A number of people have asked about the ‘ModuleException: [HTTP:101216]Servlet:’ error I came across as part of the multi-platform Dice Service example. The experiences are covered in three (first problem, second problem, solved) separate articles which I will collate and summerise here.

Use ant to build web app
Some JEE 5 containers allow you to define your annotated classes and then drop them in an ‘autodeploy’ folder. Not with WebLogic Server v10 though, an ant script is required to do some more work on the web application. Interestingly, the WLS documentation does not refer to autodeploy for web services, in fact according to the WLS Web Service documentation a weblogic ant task ‘JwscTask’ is needed to compile the annotated web service and produce the necessary WAR and EAR for deployment.

Without the JwscTask, simply dropping a JAX-WS web app in the deplopyment folder will give you an deployment error like this:


The deployment error is:
weblogic.application.ModuleException:
[HTTP:101216]Servlet: "DiceServicePort"
failed to preload on startup in Web application:
"WebServices.war".
javax.servlet.ServletException: Servlet class:
'soastation.jaxwsdice.Dice' does not implement
javax.servlet.Servlet

Tell JwscTask the type
Not only is an ant script required to invoke weblogic.wsee.tools.anttasks.JwscTask but when using it with JAX-WS web services you must set the type attribute. The guidelines in the WLS documentation states that the ant tasks need to have a type=”JAXWS” attribute set. Without this, WLS will treat the web service as a JAX-RPC service.







Summary
To deploy JAX-WS web services on WebLogic Server v10 use JwscTask, with type=”JASWS”, in an ant script. Of course, if you are going to the effort of putting an ant script together to build the web application, it might as well have it deploy the web app too.