Howdy Folks....I had a lot of trouble with an app of mine last
week. It took me a while to pin this one down. I hadn't seen any info
posted anywhere on this before, so here we go...
Here is the info...
SDE 9 with sp3 SQL Server 2k
IMS 9 with sp3
ServletExec 5
Jre 1.4.2
TCP keepalive is set to True on the Arcsde box
I have this
application that will work fine for a few hours, and then bam, it will
start throwing errors. Looking through the ArcIMS logs, I get:
[Jun 14, 2005 10:20:00 AM][3468 4000 ERROR] [ERR2407] (SDE error code -10 ) SE_stream_query : Network I/O error
I
get the above most of the time, but depending on what I'm doing the
application at the time (query, map request, etc), I may get the one of
the following:
[Jun 14, 2005 7:38:47 AM][3500 3684 ERROR] [ERR2402] Field #SHAPE# not found.
[Jun 13, 2005 8:11:52 PM][3236 4044 ERROR] [ERR2407] (SDE error code -38 ) SE_stream_execute : Attribute column not found
[Jun 13, 2005 7:58:24 PM][3236 4068 ERROR] [ERR2407] (SDE error code -10 ) SE_layer_get_info : Network I/O error
The
weird part is this...one REQUEST (image or query) will work one second,
and the next it will fail with one of the above showing up in the
errlog. It almost seems to alternate for a while between working and
failing, then it will all seem to work fine for another hour, and then
the problem shows up again for a while
My best guess is that this
is a communication break between ArcIMS and SDE. After a lot of trial
and error, we decided to try direct connect a try...Guess what? That
did the trick! We have been error free for a week+ now.
Here is a
quick primer on Direct Connect for those who are unfamiliar. Direct
connect is another way of connecting to ArcSDE. All of the ArcGIS
clients now (since 8.2 I think?) ship with all the necessary libraries
to connect to ArcSDE without going though ArcSDE. In other words, the
work that ArcSDE traditionally performs can be 'sidesteped'. There are
some finer points to it, but essentially, you just need to add an
SDEHOME environment variable to point to the %arcims install
directory%\ArcGIS\ArcIMS\Server and then change your ArcSDE AXL
connection string to instance="sde:sqlserver:datasourcename" instead of
instance="port:5151" (or whatever your port is).
So, moral of the story - if you are having ArcSDE - ArcIMS based connectivity issues, it never hurts to try direct connect!