Converting a WSDL to Javascript with Web 2.0 Feature Pack

In a previous post I discussed how easy it is to invoke web services from a browser using Websphere web 2.0 feature pack. One of the things I noticed is that it seems to parse the WSDL every time a page is loaded, which isn't necessary if we take a few additional steps.

WSDL2JS
Most developers who work with web services are familiar with a utility which converts a WSDL into generated code for a given language. Something like wsdl2java will generate java, wsdl2perl will generate perl and so on. What about wsdl2js?

As it turns out, the documentation for ibm_soap mentions that the parser holds JSON markup in a variable - all we have to do is grab the contents of that variable (smdString) and save it off to a file. Below is code that will parse a given WSDL and then copy the resulting JSON into a textbox for easy access.

<html>
<head>
<title>DsixE WSDL2JS</title>

<script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug: false, parseOnLoad: true"></script>
<script type="text/javascript" src="ibm_soap/util/WsdlParser.js"></script>
<script type="text/javascript">

dojo.require("ibm_soap.widget.SoapService");
dojo.require("dojox.data.dom");

function wsdl2js() {

// This is our homebrew wsdl2js. Json code is dumped to a textbox where
// we can copy/paste it into a file.
var wsdlParser = new ibm_soap.util.WsdlParser();
var wsdl = dojo.byId("wsdl").value;
wsdlParser.parse(wsdl);

dojo.byId("json").value = "var myService=" + wsdlParser.smdString;
}
</script>
</head>

<body>
<H3>Generate JSON from WSDL (wsdl2js)</H3>

WSDL must not contain externalized schema, all schema must be defined in the WSDL.
<br>

WSDL URL: <input type="text" id="wsdl" size="80" value="http://"></input>
<p>
JSON: <br><textarea id="json" rows="20" cols="80">var myService={}</textarea>

<p>
<input type="button" id="callServiceButton" value="Create JS from WSDL" onclick="wsdl2js()"/>
</body>
</html>

I wish I could provide a working version on this blog, but I don't have access to a publicly available WAS server. Instead, here's a screenshot of what it looks like:


Now we can include our SOAP service using a script tag instead of parsing a WSDL every time a page loads.

Comments

Popular posts from this blog

How to Open QR Codes

Jim Henson predicted the end of the world

Mega Giveaway! (Today only!!!)