Java MapScript issues Servlet

Miller Joseph miller_joseph at BAH.COM
Mon Feb 28 22:41:40 EST 2005


To All,
Umberto and Mario are correct about the problems I've had.  They are definitely related to the lack of thread safety in my mapscript.dll that I built using MS Visual C tools.  Can anyone tell me why I don't have the option to turn on thread safety in nmake.opt (unlike in *Nix flavors of the build option files)?  Was it an oversight, future feature or excluded because it is included by default whenever mapserver is built in Windows and there is no need to turn it off?
 
Thanks,
Joe Miller

________________________________

From: UMN MapServer Users List on behalf of Umberto Nicoletti
Sent: Mon 2/28/2005 10:31 AM
To: MAPSERVER-USERS at LISTS.UMN.EDU
Subject: Re: [UMN_MAPSERVER-USERS] Java MapScript issues Servlet



Quoting "Mario H. Basa" <mhbasa at YAHOO.COM>:

> Hi.
>
> >From my experience, Java Mapscript still has some
> problems with threads, and can still easily bring down
> Tomcat even with the thread compile option is set.
> Please correct me if I am wrong.
>

Yes, that is probably correct, although it is not *that easy*. I have also
stressed mapscript with jmeter and actually not found errors, but I did not
cover querying.
That is why I voted for improved thread safety when the devs showed their wishlists.


> What I did was I synchronized the class that does the
> map processing, and now my test app can survive
> benchmarking with JMeter. Here are my results as
> compared with a simillar PHP CGI program:
>

This is definitely a correct workaround.

> 4 threads (requests) per second, repeated 25 times
>
> PHP Mapscript 1.8 to 1.9 pages per second
> Java Mapscript 2.3 to 2.5 pages per second
>
> I was honestly surprised with the result and it is
> encouraging me to work with Java Mapscript even in a
> synchronized mode.
>

Were you using apache 1.3 or 2.x in the php tests? Apache 1.3 uses a fork based
model, that while being extremely safe and sound is not as fast as a threaded
model. Apache 2.x has threads and should be faster.

Regards,
Umberto

> mario
> yokohama,japan
>
>
> --- Joseph Miller <miller_joseph at BAH.COM> wrote:
>
> > Umberto,
> >
> > 1)I don't think I compiled specifically with
> > multi-threading because it
> > wasn't an option listed in the nmake.opt for
> > Microsoft Visual C++  options
> > file???  The last I heard multithreading was not
> > even on the horizon for
> > mapserver and yet I see it in the Unix build options
> > file?  What do I need
> > to do this?
> >
> > 2)I tried both options you mentioned, I had the
> > problem when passed the
> > same mapObj from request to request and stored it in
> > the session and when I
> > set it to null after every request and instantiated
> > it and assigned
> > attributes based on other variables stored in the
> > requests and sessions?
> > I'm assuming the latter is preferred?
> >
> > Thanks,
> > Joe Miller
> >
> > On Mon, 28 Feb 2005 09:44:21 +0100, Umberto
> > Nicoletti
> > <unicoletti at PROMETEO.IT> wrote:
> >
> > >Did you enable threads support?
> > >Java, and especially servlets, are definitely
> > highly concurrent
> > >environment, so you have to enable thread support
> > when compiling
> > >mapserver and mapscript. One very problematic spot
> > with regards to
> > >threads is in fact the parser of .map files.
> > >
> > >Do you attempt to reuse the same mapObj across
> > multiple requests or just
> > >create one and dispose as soon as you are done
> > within a single request?
> > >
> > >HTH,
> > >Umberto
> > >
> > >
> > >On Mon, 2005-02-28 at 00:53 -0500, Miller Joseph
> > wrote:
> > >> Hi,
> > >> I'm having a baffling problem with a nightly
> > build of Java Mapscript
> > >> from about a month ago that I am running on
> > Windows 2000 with Tomcat
> > >> 5.5.4.
> > >>
> > >> The symptom I see is that I can generate the
> > default image but after the
> > >> fourth or fifth time that I pass a new envelope
> > to change the extent of
> > >> the image I get the following error:
> > >>
> > >> The relevant part of the stack trace:
> > >> java.lang.UnknownError: Failed to draw layer
> > named 'world'.
> > >>         at
> >
> edu.umn.gis.mapscript.mapscriptJNI.mapObj_draw(Native
> > Method)
> > >>         at
> > edu.umn.gis.mapscript.mapObj.draw(mapObj.java:397)
> > >>
> > >> Occasionally I'll get a flex scanner error or
> > tomcat will crash with an
> > >> Exception_Access_Violation memmove error similar
> > to the one referred to
> > >> here:
> > >>
> >
> http://forum.java.sun.com/thread.jspa?forumID=52&messageID=1124599&threa
> > >> dID=286832
> > >>
> > >> All of this happens whether I instatiate new
> > instances of the mapObj and
> > >> set everything to null or if I use the same
> > mapObj throughout and only
> > >> after a few passes, suggesting to me that there
> > is a memory issue
> > >> somewhere.  I can pass on some specific code, but
> > all I am really doing
> > >> is creating new envelopes to store extents and
> > then assigning them to
> > >> the mapObj or extracting the corner coordinates
> > and setting the extent
> > >> with them.
> > >>
> > >> I've been fighting this for a frustrating week
> > now.  Does anyone have
> > >> any advice?
> > >>
> > >> Thanks,
> > >> Joe Miller
> > >--
> > >Umberto Nicoletti
> > <Mercury> At that point it
> > will
> > >+390415701366   unicoletti at prometeo.it
> > compile, but segfault, as
> > it should..
> > >Prometeo S.R.L. The Software Experience
> >
> > Umberto,
> >
> > 1)I don't think I compiled specifically with
> > multi-threading because it
> > wasn't an option listed in the nmake.opt for
> > Microsoft Visual C++  options
> > file???  The last I heard multithreading was not
> > even on the horizon for
> > mapserver and yet I see it in the Unix build options
> > file?  What do I need
> > to do this?
> >
> > 2)I tried both options you mentioned, I had the
> > problem when passed the
> > same mapObj from request to request and stored it in
> > the session and when I
> > set it to null after every request and instantiated
> > it and assigned
> > attributes based on other variables stored in the
> > requests and sessions?
> > I'm assuming the latter is preferred?
> >
> > Thanks,
> > Joe Miller
> >
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Sports - Sign up for Fantasy Baseball.
> http://baseball.fantasysports.yahoo.com/
>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20050228/e22f7139/attachment.html


More information about the mapserver-users mailing list