mapserver java servlets

Dan Barron dbarron at DSWLLC.COM
Wed Nov 24 10:47:13 EST 2004


Jose,

Here's what works well for me and can be used in a servlet or any jsp file
- courtesy of Umberto btw.

1) >> file JavaMpascript.java <<

package mapserver.java.mapscript;

/**
  * Created by user: umberto at unicolet.org
  * Date: May 23, 2004
  * License: GPL
  */

public class JavaMapscript {

     private static JavaMapscript instance = null;

     private JavaMapscript() {
         try {
             System.loadLibrary("mapscript");
         } catch (Exception e) {
             e.printStackTrace();
             System.err.println("* error loading native library *");
             System.err.println("Error is: "+e);
         }
         System.out.println(" * mapscript native library loaded *");
     }

     public static JavaMapscript getInstance() {
         if ( instance == null ) {
             instance = new JavaMapscript();
         }
         return instance;
     }
}

2) >> Make an instance of this class somewhere else.

   mapserver.java.mapscript.JavaMapscript.getInstance();

Your library will only be loaded once, at least that is how it behaves for
me and has been reliable so far.

Dan


At 06:34 AM 11/24/2004, Chris wrote:
>Jose, what servlet container are you using?
>
>Try initializing the servlet first without calling it -- you can do this
>by putting it in web.xml like this:
>
><servlet>
>     <servlet-name>test</servlet-name>
>     <servlet-class> {your class name} </servlet-class>
>     <load-on-startup>1</load-on-startup>
></servlet>
>
>This will force the init() to run without the service().  Also you should
>avoid lazy initialization in Singleton classes.
>
>Regards,
>
>Chris
>-----Original Message-----
>From: Jose Luis Gonzalez [mailto:joseluismapserver at YAHOO.ES]
>Sent: Wednesday, November 24, 2004 4:51 AM
>To: MAPSERVER-USERS at LISTS.UMN.EDU
>Subject: Re: [UMN_MAPSERVER-USERS] mapserver java servlets
>
>Hi Oliver,
>I have just done what you recomended,  leaving the JavaMapscript-Class so
>the only thing he does is to load the library.
>Then in another class, the one where I have my servlet, I wote in the:
>public void init (ServletConfig cfg){
>
>JavaMapscript.getInstance();
>
>and later in the:
>public void service (HttpServletRequest req, HttpServletResponse res){
>
>I began writing my mapscript code, and it still gives me the same error:
>
>javax.servlet.ServletException: Native Library
>/opt/SUNappserver/domains/domain1/lib/ext/libmapscript.so already loaded
>in another classloader
>
>Do you know why?
>
>Thank you
>
>Jose Luis
>
>Oliver Wesp <wesp at gdv.com> wrote:
>Hi,
>
>you're on the right way to avoid the "Native library cannot be loaded
>twice" error. Your JavaMapscript-Class implements a singleton so it's
>loaded only once in Tomcat. But you should not add your mapscript code
>to this class. Whenever you change the class Tomcat tries to reload and
>complains about the library already loaded.
>Write a second class and load the library with
>
>JavaMapscript.getInstance();
>
>Add your mapscript code to that class and you should be fine.
>
>best regards
>Oliver
>
>Jose Luis Gonzalez wrote:
> > Hi to all
> > I would implement mapserver in tomcat as servlet but I have found a lot of
> > problems in start with it!
> >
> > So:
> > 1) is there sites that implement mapserver as servlet in tomcat that I can
> > view?
> > 2) Some one have a piece of basic code that I can compile as servlet in
> > tomcat for view how it run? I have load the java Howto.
> >
> > Do you have examples so I can see how can I work
> > with mapserver functions and servlets?
> > I have been seeing the wiki, but I can not really find what I want.
> >
> > I have done the example of loading a library that apears in:
> >
> > http://www.unicolet.org/mapserver/tomcat.html
> >
> >
> > and it works, but when I want to complete the JavaMapscript.java code
> > with other
> > mapserver comands, it doesn't work:
> >
> > import edu.umn.gis.mapscript.*;
> >
> > public class JavaMapscript {
> > private static JavaMapscript instance=null;
> >
> > private JavaMapscript() {
> > try {
> > System.loadLibrary("mapscript");
> > } catch (Exception e) {
> > e.printStackTrace();
> > System.err.println("* error loading native library *");
> > System.err.println("Error is: "+e);
> > }
> > System.out.println(" * mapscript native library loaded *");
> > mapObj map = new mapObj("test.map");
> > imageObj img = map.draw();
> > //img.save("result", map);*/
> > }
> >
> > public static JavaMapscript getInstance() {
> > System.out.println("Try to instantiate Mapscript");
> > System.out.flush();
> > if ( instance == null ) {
> > instance = new JavaMapscript();
> > }
> > return instance;
> > }
> > }
> >
> > And even worse, when I do any modifications and I put the new .class
> > file in the
> > server, I have an error because it says that the library was already
> > loaded, and
> > my only solution now to solve it is to turn off the server and turn it
> > on again.
> >
> > Hope someone can help me
> >
> > Thank you
> >
> > Jose Luis
> >
> > ------------------------------------------------------------------------
> >
> > Nuevo Correo Yahoo!
> >
> >
>
>
>--
>Dipl.-Geogr. Oliver Wesp
>Gesellschaft fuer geografische Datenverarbeitung
>Binger Strasse 49-51
>D-55218 Ingelheim
>fon: +49 6132 714818
>fax: +49 6132 714828
>http: www.gdv.com
>
>
>
><http://es.rd.yahoo.com/mail_es/tagline/mail/image/*http://es.mail.yahoo.com>
>Nuevo Correo Yahoo!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20041124/02efdb38/attachment.html


More information about the mapserver-users mailing list