Hello!I need to know how to consume a websphere web service in Lotus R6.
Please, only in R6!!! NOT in R7
Thank you in advance!!!
Hello!I need to know how to consume a websphere web service in Lotus R6.
Please, only in R6!!! NOT in R7
Thank you in advance!!!
Subject: How to consume a websphere web service in Lotus R6???
Like for most webservices, you need to make a server based LotusScript agent, which uses the MSXML6.DLL (object class name “Msxml2.XMLHTTP.6.0”). The default MSXML3.DLL used by the “Microsoft.XMLHTTP” class is too buggy and can even crash your Domino’s HTTP task.
While the MSXML6.DLL is less buggy, it still crashes Domino’s HTTP task when the destination web service is lagging (the HTTP threads keep hanging because they get no real time-out signal), this usally happens when the remote web service server is running Microsoft BizTalk (which is also a very buggy product, and should not be used for real production purposes).
Also, you should not use your real server for the web service calls, but a Microsoft-Crash server, which can be rebooted any time, since all Microsoft products tend to be very instable over longer time. You can use for example an iframe to embed the Microsoft-Crash server in your real web server’s Form.
Here’s a code fragment of how my Domino based Web Forum retrieves World of Warcraft items from a remote server:
Set http=createobject(“Msxml2.XMLHTTP.6.0”)
http.open “GET”, “500 Internal Server Error”+itemname, False
http.send
s=http.responsetext
The variable “s” has now the complete HTML page or (XML, SOAP, whatever the destination server is providing) which you can analyze and process further.
Subject: RE: How to consume a websphere web service in Lotus R6???
I think the question was about using Webservice (not reading any plain/xml data) that would imply preparing request and interpreting response. I do not think Msxml provides that out of box (it does XML parsing, but that’s a long and manual way to go). You can probably use it for this task, but probably it takes a lot of work, so the question would be rather about this part. Probably there is some way to use MSSOAP as part of solution. I sort of hoped to see the steps or even sample in your post (and I’m sort of disappointed – I have never done this song-and-dance in LS on my own, so I’d have also liked to see it explained in detail:-)
Also part about displaying the response in iframe. Unless you need to see a plain response text it does you little good. Recently all those security restrictions to limit cross-site exposure have made the browsers lock up iframes (or any other sneaky ways to acess data in other frames if it comes from another host). So no JS code on page can read anything out of it, that severely limits usability of such scenario.
Of course it depends on Ana’s real task/requirements – they may not be complicated, but I would suspect that in light of all this the best way to do this on any larger scale would be to use Java agent – you can generate nice Webservice client classes in Java and it does not crash Domino, so you do not need to run it on a separate server (and display in a little usable way). There can be some hard part about the level of Java Domino supports – so you need to generate webservice client classes that supports 1.2 (?) or whatever version ND6 runs on. But that might be easier than 2 server approach. Just an idea.
Subject: RE: How to consume a websphere web service in Lotus R6???
I don’t know of any stable XML parser, that’s why I would just read raw data from HTTP and parse it with a custom LotusScript agent.
We have also tried Java to consume webservices, and that was a horror. Java eats memory and never releases it, which resulted that we had to reboot the server multiple times per day. Raising the Java memory to 1GB only delayed the rebooting, at the best to a few days.
Then we got rid of the Java agents and used LotusScript agents, and everything worked fine, except for that Microsoft DLL and Microsoft BizTalk on the other end, that’s why I don’t see any other stable solution that to have a seperate server for the web services.
Using R7 webservices might work better than those Microsoft DLLs, but I haven’t tried those yet, and in this case they were also not available, as he wanted a solution for R6 servers.
Subject: RE: How to consume a websphere web service in Lotus R6???
ok, so from what you are saying – there is no good solution fro R6 at all? The only “good” solution is to put the machine running msxml on another machine. That is again limited in the way this solution can be used client side. Or again regularly reboot Domino, that may also be fine in many applications.
I was not aware of these Java problems. Are they present in general for any Java agents, or there were some particular classes in your application that caused problems? I wonder, could you still say this in ND7?
You tried to sort this out with IBM support I presume? So was it a kind of failed garbage collection? or a memory leak in JVM used by Domino?
Subject: RE: How to consume a websphere web service in Lotus R6???
I good solution would be to get rid of the Microsoft DLL, or hope that some day it would be more stable. Perhaps this AspHTTP would solve that problem for now: Server Objects – ASP DNS
The Java agent was running under R6 and R7 with exactly the same symptoms. The code is huge, and it would be very time consuming to start to find where the memory leak comes from. And besides, in my opinion the whole idea of Java is to be a cross-platform solution, and since LotusScript is that too, I prefer LotusScript. LotusScript is much clearer and shorter code, much easier to develop and maintain, and much more stable from my experience too regarding garbage collection and memory leaks. Even the loading of a Java agent into Domino Designer takes ages.
Subject: RE: How to consume a websphere web service in Lotus R6???
thanks, IMO you can get real memory leaks in Java only if it uses JNI calls where local libraries do not release memory. But i agree it may become nasty to investigate.
Your other point “in my opinion the whole idea of Java is to be a cross-platform solution, and since LotusScript is that too, I prefer LotusScript” sounds quite disputable in this context to me though. On the one hand Java is sort of “naturally” intended for such kind of things as network communications, so a preferable solution; on the other hand – as soon as you use MS dll in LS, you get stuck in a “single platform” or well, Windows platform set.
Subject: RE: How to consume a websphere web service in Lotus R6???
You could write your own HTTP library for all platforms, but LotusScript should really have native HTTP commands built in!