Re: Deploying over IIS and VB

From: sb (orzo617_at_hotmail.com)
Date: 03/24/04


Date: 24 Mar 2004 11:09:02 -0800

dashwood@enternet.co.nz (Peter E. C. Dashwood) wrote in message news:<b3638c46.0403210635.59a62084@posting.google.com>...
> orzo617@hotmail.com (sb) wrote in message news:<e66a875b.0403201400.5c5ee637@posting.google.com>...
> > Hello,
> >
> > I have Cobol Dlls written in Net Express Cobol and precompiled using
> > oracle 9i compiler. I am trying to deploy these so IIS web server.
> > The basic architecture is the following:
> >
> > IIS spawns DLLHost.exe --> calls VB.dll (COM+ Object) --> Cobol.dll.
> >
> > I have very little/no knowledge of Cobol but need to use this
> > Cobol.dll as a lot of business logic is written in it.
> >
> > VB dll is compiled as apartment threaded, multiuse.
> > Cobol dll is compiled as shared, multithreaded.
> >
> > Problem:
> > When servicing one request from a browser, everything seems to work
> > fine. But when I issue two or more request concurrently or very close
> > to each other, I get error message "error '800706be'" Which in
> > Microsoft world translates to "Procedure call failed." Can someone
> > enlighten me as to what is going on here?
>
> There is a whole lot of stuff you haven't mentioned.
>
> Is this running as CGI or ASAPI code on IIS? (CGI is not
> multi-threaded, no matter how you compile it...)
>
> Are you using MTS to handle the database COMMIT and ROLLBACK? (if you
> are, you need a transaction context as well as an object context; if
> you're not, you may be in trouble with synchronising).
>
> What settings do you have in component services for the COM+
> component?Try "REQUIRES New transaction". If this fails, experiment
> with the other settings for this parameter.
>
> > I had thought that DLLHost
> > would have a separate copy of Cobol.dll for each request coming in.
>
> No. But if it has the right transaction and object contexts it can
> behave as though it does. It looks as though the COBOL .dll is not a
> COM server in its own right, but is simply called from the VB COM
> server. This is fraught. No new instances can be instantiated and it
> is little wonder you are having trouble when you try concurrent
> threads. The VB COM+ server needs to get a new instance of the COBOL
> .dll each time it (VB) is instantiated. It can only do this if the
> COBOL .dll is also a COM server (or it is able to multiply instantiate
> the object context it is running in). If the DB access is carried out
> in the COBOL .dll, don't be surprised if everything grinds to a halt.
>
> The problem is not with compile options, it is with design.
>
> > But it seems as though it only keeps on copy to service requests. So
> > I suspect this is a cobol dll compilation issue. But I am at loss;
> > agin no knowledge of COBOL!
> >
>
> Your best chance of a quick fix is to tweak DLLHOST.EXE, using the
> component services on the server. In particular, see if you can get
> the VB COM+ server to run in a MTS environment, and try different
> settings of the transaction support parameter for the COM+ server.
>
> The real solution is to rebuild (not re-compile) the COBOL application
> so it is a true COM+ server. Then VB can instantiate it any time it
> needs to.
>
> I have had some very painful experience implementing COM+ with IIS and
> the real solution is to make COBOL another COM+ server just like
> everything else. Once you do this, it works beautifully. Both IIS and
> COM+ are good technologies. I don't know how MF supports the building
> of COM servers in COBOL, as I use Fujitsu, but I should think there
> will be equivalent functionality.
>
> There is not enough hard information here to properly diagnose your
> problem, but on the evidence, it would seem that a standard COBOL .dll
> is being used with an OO COM+ component written in VB. This is like
> tying an anchor to a cat and wondering why it can't get over the wall.
> The COBOL needs to be OO and wrapped as a standard COM server.
> Specifying "multithreading" at compile time is not enough in and of
> itself, to get multiple instances. Without this capability, your
> application will only ever be good for one thread.
>
> Hope this helps.
>
> I am no longer frequenting CLC (I look in occasionally) but would be
> interested to hear how you get on.
>
> Pete.
>
> > As I need to get this completed SOON I would appreciate ANY
> > pointers/help/suggestion with this matter.
> > Thank you
> > SB

Pete,

Thank you for you suggestions with this matter. I realize now I may
have to go the OO Cobol route. But still need to find out how to
pre-compile OO Cobol with Oracle Precompiler.

Saurabh.



Relevant Pages

  • Re: System Environment Variables
    ... computer has ever had is Windows XP professional. ... also tried a script that Pete Dashwood posted here last July, ... I downloaded  the express version of SQL Server 2008 to ... If you use Fujitsu COBOL you need to install it on ...
    (comp.lang.cobol)
  • Re: Expressions of interest in a Remote COBOL server, please?
    ... but here is a really simply little server ... my WLAN that has Fujitsu COBOL installed on it. ... There are a number of scripting options available under Windows (Scripting ...
    (comp.lang.cobol)
  • Re: Deploying over IIS and VB
    ... > I have Cobol Dlls written in Net Express Cobol and precompiled using ... > VB dll is compiled as apartment threaded, ... COM server in its own right, but is simply called from the VB COM ... The problem is not with compile options, ...
    (comp.lang.cobol)
  • PL/I, COBOL, BASIC, Fortran, Pascal, MACRO, Bliss, hell even C
    ... I should point out that although this particular server example is in COBOL, ... is capable of being compiled/linked into a VMS shareable image then it can ... Just six User Action Routines in the form of a Shareable ...
    (comp.os.vms)
  • Re: Any comments? (Answers to Pete)
    ... I like to kick it old school with COBOL, ... database stored on a new offsite server. ... and we find out it is a Windows server that our director ... actually has worked with Oracle & Java- and he knows what ASP is! ...
    (comp.lang.cobol)