SOCKET Technical blog for SOCKET http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/feed/entries/atom 2008-05-06T18:15:30+01:00 Apache Roller (incubating) http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/sumer_is_acumen_in.html Sumer is acumen in.. Brian Peter Clark 2008-05-06T18:04:20+01:00 2008-05-06T18:15:30+01:00 <p>..and so is the next release of SOCKET. The Java commission has been completed and the amended Rose SOCKET factory now handles infinitely nested datatypes as well as attachments. Thanks to Atif Suleman who carried out the coding. The task was made significantly easier by using some classes from the Spring codebase. I suspect that this might have saved us a couple of weeks during the original project. Shoot the architect!</p> <p>The new code is now in HEAD in our SourceForge CVS repository. After some prettying up of the XSLT and CSS style sheets I think that we will be ready to take SOCKET out of beta. (Just when the fashion turns to "permanent beta" we emerge from this state. Had to do it.)</p> <p>Once the stylesheets are fit for looking at (the garish orange is a bit much, I'm told) I think we'll put up a couple of animated screen captures on what SOCKET can do now.</p> <p>Even as the capabilities of IDEs such as NetBeans and Eclipse make the creation of Java clients for Web services the matter of literally a couple of button clicks, SOCKET has still got its nose in front with a paste-and-click generation of a Web app client for a Web service. As someone that is constantly sniffing around and testing Web services, SOCKET must have saved me hundreds of hours in the last year or so.</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/the_socket_roadmap.html The SOCKET Roadmap Brian Peter Clark 2007-08-12T12:46:13+01:00 2007-09-10T19:20:06+01:00 <p>Some new development work on SOCKET has just commenced to modify the Rose factory so that it will be able to deal with nested complex datatypes in the WSDL. It will also be able to handle file attachments. These additions will greatly increase the range of services that SOCKET will be able to process. The work is scheduled to be completed mid-September.</p> <p>Completion of this work will signal the start of more development. Firstly, Java Management Extensions (JMX) instrumentation will be added to the SOCKET client in order to provide a monitoring and configuration interface. Service performance metrics will be available to a management application.</p> <p>Also, users will be able to customise operation and parameter names in the stylesheets, again through a management application.</p> <p>Having the JMX agent incorporated into the SOCKET client is an important addition in that it will eventually help integration into a SOLA and will also enable configuration of Shibboleth/Guanxi protection of the application.</p> <p>The final item on the medium distance SOCKET roadmap is to replace the homegrown XSLT handling by the excellent Cocoon framework. This should lead a lot more functionality and flexibility in the view layer.</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/socket_case_studies.html SOCKET Case Studies Brian Peter Clark 2006-12-11T22:00:45+00:00 2007-09-10T19:20:06+01:00 <p>A new Case Studies page has been added to the SOCKET web site.</p> <p>The first case study describes how it took no time at all for SOCKET and NetBeans to knock up a Protein Sequence Repository service that facilitates group work in a bioinformatics activity.</p> <p>Job's a...</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/1_registry_good_2_registries.html 1 Registry Good, 2 Registries Better Brian Peter Clark 2006-08-22T19:39:08+01:00 2007-09-10T19:20:06+01:00 <p>Even though the subject matter is registries, this blog is filed under general rather than UDDI. It looks further afield than UDDI and a step beyond SOCKET to what might come after. To the team, SOCKET has always been regarded as an exploratory first step in the progression to a full-blooded Service-Oriented Virtual Learning Environment (SOVLE).<br/> I cast my mind back to The Godfather when Tom Hagen was replaced as the consigliere to Don Corleone. Tom Hagen was a great peace time consigliere, but no good for war time. UDDI is a fine peace time Web services registry, but will not do for the bloody struggle that is runtime. A dynamic SOVLE in which services and components are being constantly deployed, undeployed, configured, reconfigured and monitored is too much of a war zone for UDDI. There is too much fine-grained and dynamic grape-shot flying around to be serviced by SOAP messages shuttling back and forth to the gentle jUDDI. So who is the Michael Corleone of the registry world? Who can save the SOVLE from runtime confusion and defeat? Jimmy X is his name, MBeanServer is his game. The MBeanServer is a runtime Java registry for Managed Beans, or MBeans. Each MBean is associated with a managed resource. In the SOVLE this will be a Web application or a Web service. These MBeans can carry out the full range of management functions: deployment, installation, control and monitoring. The pairing of an MBean with a SOVLE resource creates the basis of a comprehensive plugin architecture. Every resource, including access control and group management, plugs into the MBeanServer registry through its associated MBean.<br/> Although jUDDI has been retired, she still has important words of advice to give to Jimmy X. Which services are dependent on which others? What might a good bootup strategy be? Which services and components are fit to join Jimmy X?<br/> On their own, Jimmy and jUDDI don't have the power to support a SOVLE.. together they can take on the world. </p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/saturn_and_pluto.html Saturn and Pluto Brian Peter Clark 2006-08-14T17:47:42+01:00 2007-09-10T19:20:06+01:00 <p>Atif has just finished off two clients for the SOCKET engine, a command line tool, codenamed "Pluto", and a Web application, named "Saturn". A screenshot of Saturn is given below.</p> <p><img src="/roller/resources/socket/saturn-gui.gif" alt="saturn interface to SOCKET engine"><br/> Credit: The Hubble Heritage Team (AURA/STScI/NASA).</p> <p>One inputs the absolute URL of the WSDL document and, on submission of the form, a download link is returned for the service consumer war file.</p> <p>A screen shot of Pluto in action is given below:</p> <p><img src="/roller/resources/socket/pluto2.png" alt="command line interface to SOCKET engine" ></p> <p>The sprint to the line is now on with the major remaining tasks, the most important being the handling of complex types. The grunt work has been done for this: essentially the job is to unravel a JavaBean to simple types where the existing SOCKET code can take over.</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/socket_demo.html SOCKET Demo Brian Peter Clark 2006-08-10T15:04:46+01:00 2007-09-10T19:20:06+01:00 <p>There is a socketized Bods demo at:</p> <p>http://socket.leeds.ac.uk/bodington/site/</p> <p>Interested parties are welcome to use the guest account:</p> <p>username: guest<br/> pw: guest1</p> <p>The SOCKET links lead to the QMShibb sub-project and the main <br/> sub-project. The QMShibb page has shibbed links to a <br/> QuestionMark Perception test, a list of tests and the admin app (to <br/> which 'guest' will not have access).</p> <p>We have put up 2 SOCKET web services and a 'SOCKET web <br/> application'. (The create SOCKET service tool will not be visible to a<br/> guest user.)</p> <p>The web service producers are on an external server, while the <br/> consumer apps are in socket.leeds.ac.uk along with the bodington <br/> instance.</p> <p>Chemical Elements</p> <p>This is one of our test services. The stylesheets are development <br/> versions - we are making no claims that these are fit for teaching <br/> purposes.</p> <p>Jabber</p> <p>We have plugged in a Jabber applet which is served out from a remote server in a jsp. (The Jabber server uses an <br/> embedded Hypersonic. Wouldn't want any conflict with <br/> QuickBods.)</p> <p>I simply chose what looked like the simplest Jabber applet around: <br/> e4Applet 1.1.1</p> <p>You can sign on with Jabber account:</p> <p>username: guest01<br/> password: socket01</p> <p>You can join the following room:</p> <p>socket@conference.webforwireless.co.uk</p> <p>No pw required.</p> <p>SSRun</p> <p>Although we will sign off with the ability to handle complex data <br/> types, the present socket engine handles simple datatypes only - <br/> strings, ints, floats, doubles, booleans, dates. (Client-side js <br/> validation comes as standard.) However, we have set up the <br/> JISC/Icodeon ASSIS/SSRun web service and passed the wsdl <br/> through the engine. The test data has not been loaded into the <br/> Web service and there are complex data types so the service is <br/> not functional, but this gives a basic impression of what the final <br/> turnkey product will do. As with Chemical Elements, there has <br/> been absolutely no tinkering with the Java, only some stylesheet <br/> tweaks (I added a fetching orange/yellow gradient fill to SSRun, for<br/> example). Two extremely valuable operations are working, though: ping and<br/> createRunId, proving that the service is live.</p> <p>We will be putting up a SOCKET development release soon, with <br/> perhaps a couple more over the next few weeks leading up to 1.0: <br/> simple types; arrays; complex types included.</p> <p>For further information: email me, sign into Jabber Bods and I'll be<br/> clayton ( or Brian: b.p.clark at leeds dot ac dot uk )</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/socket_net.html SOCKET.net? Brian Peter Clark 2006-05-15T14:46:42+01:00 2007-09-10T19:20:06+01:00 <p>A recent article on the Microsoft site:</p> <p><a href="http://msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dnvs05/html/CallWebServ.asp" target="_blank">Calling an Arbitrary Web Service</a></p> <p>Scott Golightly, Microsoft Regional Director<br/> Keane, Inc.</p> <p>April 2006</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/11_may_2006.html 11 May 2006 Brian Peter Clark 2006-05-11T19:28:05+01:00 2007-09-10T19:20:06+01:00 <p>The French and British sides of the Channel Tunnel met on 22 May 1991.</p> <p>The SOCKET service consumer software and the viewfactory filter met on 11 May 2006.</p> <p>A data transformation was observed and a small breakthrough ceremony took place.</p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/the_bad_easy.html The Bad Easy Brian Peter Clark 2006-04-12T10:16:38+01:00 2007-09-10T19:20:06+01:00 <p>On first meeting Web services and WSDLs, the concepts of rpc-style and document-style services are confusing. The problem stems from the fact that there are two completely different considerations that are described using the same terminology, the implementation of the Web service itself and the structure of the soap content in the WSDL document.</p> <p>The important facet is the programming model that the consumer and producer use to process their soap messages, not the style of the WSDL. This is where the real distinction between rpc-style and document-style services lies. Since the fundamental aim of SOCKET is to create consumer software for Web services from a WSDL it is essential that we know all the variations that services can throw at us so that we can proceed as far as possible in the process of setting up the consumer side of the service. For very simple services, SOCKET will be able to provide a one-step turnkey process for creating a client. For more complex rpc services and document-style services, SOCKET will probably provide a handler interface wrapped around the XML message which can then be implemented for a complete construction of the functionality of the service.</p> <p>If we are using the Axis (JAX-RPC) programs Java2WSDL and WSDL2Java, or their equivalents in our language of choice, then we're probably doing rpc. And, bad news, rpc is bad. It's bad for interoperability. If Java shall speak only unto Java, and C# shall speak only to C# and Python shall speak only to Python, then we'd be OK, but then what'd be the point of Web services? It's when Java tries to talk to RosieLea, or when Python wrestles with Anaconda, that the rpc difficulties emerge, essentially through the minefield of mismatched datatypes, and also in the so-called XML-OO impedance mismatch. </p> <p>So what is the document style? In a document-style Web service, you simply send the soap message to the producer and say, Look, we've talked about this, and we bashed out our schema, take the message and do what you want with it. The producer does this and sends a soap document back. There you are, consumer, we talked about this and we bashed out our schema, take the reply and do what you want with it. Using this style, I suspect that SAAJ 1.2 soap elements, which implement DOM, feeding into an XSLT/XPath engine will be the most important protocol, rather than using some tool-generated language-specific API. This will become clearer in the near future. So how is this better than rpc? Well, hopefully the problem spots have been identified and can be catered for. One field might be a date. The producers can say - look, this field is a date, but - hey - we might feed it in as a null value (nillable = true in the schema) - so watch out for this. In the rpc service, the null date might feed straight into an api that hasn't got null date types - it might go in as a zero...with hilarious consequences (I take this particular example from a Ted Neward interview on The Server Side). </p> <p>So rpc is bad, and document is good. Document is also good from a related angle - message-oriented middleware and the Humptyhump Humpty Bus. I might say more about this at a later date - I usually do. </p> <p>The bad news is that for simple services rpc is easier - all tool based, and taken directly from the WSDL operations and messages. With a bit of luck, for simple rpc-style services you are saved the problems that necessarily exist if an XML document has to be developed to implement complex service functionality. Having said this, even simple rpc-style services will have semantic problems, albeit of a different kind, in the absence of good annotations or documentation. Please input gas pressure. Surely - in Pascals, bars, torrs, atmospheres, psi...? Missions to Mars have perished on such semantic asteroids, and so will many a badly-drawn Web service.</p> <p>So, there are rpc-style and document-style Web services. Either style can be employed using rpc-style or document-style WSDL documents. The WSDL styles are normally referred to as rpc-literal and doc(ument)-literal. So, if we can have an RPC-style Web Service (RWS) and a Document-style Web Service (DWS), there are 4 immediate possibilities: rpc-literal and doc-literal RWS; and rpc-literal and doc-literal DWS (I suppose we ought to give document-wrapped literal a namecheck, too, which makes it easier for tools to handle RWS with doc-style WSDLs). </p> <p>SOCKET has started orff with the bad easy stuff, a natural place to start: rpc-literal RWS. </p> http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/8080_restored.html 8080 restored Brian Peter Clark 2006-04-11T12:53:02+01:00 2007-09-10T19:20:06+01:00 mea culpa stop silly ass stop permalink problem fixed stop utf-8 not configured properly stop arriving istanbul wed stop http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/broken_links_rss_feed_exporter.html Broken Links - RSS Feed Exporter Omits Port Number Brian Peter Clark 2006-04-08T16:29:50+01:00 2007-09-10T19:20:06+01:00 212 characters for message stop cetis elrond links to individual blog items broken stop rss exporter omits port 8080 in permalinks stop access to blog via web site stop those puzzling at style ? the first 212 characters are visible in the aggregator stopp http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/roller/socket/entry/socket.html SOCKET Brian Peter Clark 2006-04-06T14:55:46+01:00 2007-09-10T19:20:06+01:00 <p>This is the technical blog for SOCKET, a JISC ELF toolkit project.</p> <p>The aim of the project is to assemble a toolkit that, given a WSDL file, will automatically generate consumer software for a Web service together with an interface that makes it available as a resource in a virtual learning environment.</p> <p>Project Web site: <a href="http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/eldg/socket/home.jsp">http://www.agbooth.com/SOCKETBlog/www.socketelf.org_8080/eldg/socket/home.jsp</a></p> <p>Project dates: 1 February 2006 - 31 July 2006.</p> <p>Members of the project team belong to the e-Learning Development Group in the Faculty of Biological Sciences at the University of Leeds.</p> <p>Professor Andrew G. Booth, Project Director</p> <p>Dr Brian P. Clark, Project Manager</p> <p>Atif Suleman, Principal Developer</p> <p>Rob J. Garbutt, Developer</p> <p>We are pleased to have the following consultants for the project.</p> <p>Alistair Young (Guanxi Consultant) from the UHI Millennium Institute at Sabhal Mòr Ostaig, Isle of Skye. Alistair wrote the alternative implementation of the Shibboleth profile used in the Guanxi Identity Provider and Service Provider.</p> <p>John Kleeman (Questionmark Consultant) is the Chairman of Questionmark Computing Limited, the vendors of Questionmark Perception.</p>