Monday, February 25, 2008

cwbx info on connection pooling

Well, I talked on the phone with IBM's .net Support. And the cwbx definitely does not do any kind of pooling. It's a batch/queue setup. So multiple calls into the dll will stack up one after the other until they are all done.

To get around this I created a simple Object Pool, that would instanciate the object's connection to the 400, and then when I need the object, get it from the pool, use it and return it. Pretty slick!

As for the connecitons on the 400, they just sit in a status of TIMW until they are used. I do have a limit on the number of connections in the pool, so if I get too many in there, I close the oldest one down.

Thursday, February 14, 2008

cwbx help files

Well, I wrote an application that I was getting the objectdisposed exception in, and that was using IBMs .net provider to talk to the as400, call a stored proc which called a program.

Unfortunately, that wasn't fast enough for me, so I started searching around for help on calling programs directly. I found a dll, that you can reference in your project, which will give you access to calling 400 programs directly. This opens up a whole new world because you can start passing complex types back and forth (suposedly, I haven't tried this myself). The downside, is that there is only one real other blog that actually has info on it.
http://www.netsplore.com/PublicPortal/blog.aspx?EntryID=13

And the program works great. However, I needed to know what some of the values mean, because even though this method is faster than the .net provider, i'm still slower than running websphere for the same calls.

It took some reasearch, but for all you out there, who need to know, you can find the cwbx.dll help files in the following directory on your windows system:

C:\Program Files\IBM\Client Access\Mri2924\cwbx.hlp

that last directory having to do something with the version of your client access.....

This basically a help file on what all the values, types, methods, objects, etc mean for that dll.

objectdisposedexception Fixed!

I found the problem, and posted the solution on a comment field in one of the previous posts. But here it is. Our server was running the latest fixes, however, my client access was not updated to the latest service pack. Our Operations manager, gave me this link to IBMs site to install the service pack on my local windows machine, and it works.

ftp://ftp.software.ibm.com/as400/products/clientaccess/win32/

Then select v5r4m0 (or what ever version you are running), servicepack, and si29771.

Download si29771.exe and run it on your system. Poof! Now you no longer get the objectdisposedexception, and no more errors with ThreadPool.RegisterWaitForSingleObject

Hope this helps!