<html>
<body>
Jose,<br><br>
Here's what works well for me and can be used in a servlet or any jsp
file - courtesy of Umberto btw.<br><br>
1) &gt;&gt; file JavaMpascript.java &lt;&lt;<br><br>
package mapserver.java.mapscript;<br><br>
/**<br>
&nbsp;* Created by user: umberto at unicolet.org<br>
&nbsp;* Date: May 23, 2004<br>
&nbsp;* License: GPL<br>
&nbsp;*/<br><br>
public class JavaMapscript {<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; private static JavaMapscript instance =
null;<br><br>
&nbsp;&nbsp;&nbsp; private JavaMapscript() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.loadLibrary(&quot;mapscript&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e.printStackTrace();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.err.println(&quot;* error loading native library *&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.err.println(&quot;Error is: &quot;+e);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot; *
mapscript native library loaded *&quot;);<br>
&nbsp;&nbsp;&nbsp; }<br><br>
&nbsp;&nbsp;&nbsp; public static JavaMapscript getInstance() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( instance == null )
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
instance = new JavaMapscript();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return instance;<br>
&nbsp;&nbsp;&nbsp; }<br>
}&nbsp;&nbsp; <br><br>
2) &gt;&gt; Make an instance of this class somewhere else.<br><br>
&nbsp; mapserver.java.mapscript.JavaMapscript.getInstance();<br><br>
Your library will only be loaded once, at least that is how it behaves
for me and has been reliable so far.<br><br>
Dan<br><br>
<br>
At 06:34 AM 11/24/2004, Chris wrote:<br>
<blockquote type=cite class=cite cite><font face="arial" size=2 color="#0000FF">Jose,
what servlet container are you using?<br>
</font>&nbsp;<br>
<font face="arial" size=2 color="#0000FF">Try initializing the servlet
first without calling it -- you can do this by putting it in web.xml like
this:<br>
</font>&nbsp;<br>
<font face="arial" size=2 color="#0000FF">&lt;servlet&gt;<br>
</font>&nbsp;&nbsp;&nbsp;
<font face="arial" size=2 color="#0000FF">&lt;servlet-name&gt;test&lt;/servlet-name&gt;<br>
</font>&nbsp;&nbsp;&nbsp;
<font face="arial" size=2 color="#0000FF">&lt;servlet-class&gt; {your
class name} &lt;/servlet-class&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br>
&lt;/servlet&gt;<br>
</font><br>
<font face="arial" size=2 color="#0000FF">This will force the init() to
run without the service().&nbsp; Also you should avoid lazy
initialization in Singleton classes. <br>
</font><br>
<font face="arial" size=2 color="#0000FF">Regards,<br>
</font><br>
<font face="arial" size=2 color="#0000FF">Chris<br>
</font>
<dl>
<dd><font face="tahoma" size=2>-----Original Message-----<br>

<dd>From:</b> Jose Luis Gonzalez
[<a href="mailto:joseluismapserver@YAHOO.ES" eudora="autourl">mailto:joseluismapserver@YAHOO.ES</a>]<br>

<dd>Sent:</b> Wednesday, November 24, 2004 4:51 AM<br>

<dd>To:</b> MAPSERVER-USERS@LISTS.UMN.EDU<br>

<dd>Subject:</b> Re: [UMN_MAPSERVER-USERS] mapserver java
servlets<br><br>
</font>
<dd>Hi Oliver,<br>

<dd>I have just done what you recomended,&nbsp; leaving the
JavaMapscript-Class so the only thing he does is to load the
library.<br>

<dd>Then in another class, the one where I have my servlet, I wote in
the: public void init (ServletConfig cfg){<br>

<dd>&nbsp;<br>

<dd>JavaMapscript.getInstance();<br>

<dd>&nbsp;<br>

<dd>and later in the:<br>

<dd>public void service (HttpServletRequest req, HttpServletResponse
res){<br>

<dd>&nbsp;<br>

<dd>I began writing my mapscript code, and it still gives me the same
error:<br>

<dd>&nbsp;<br>

<dd>javax.servlet.ServletException: Native Library
/opt/SUNappserver/domains/domain1/lib/ext/libmapscript.so already loaded
in another classloader<br>

<dd>&nbsp;<br>

<dd>Do you know why?<br>

<dd>&nbsp;<br>

<dd>Thank you<br>

<dd>&nbsp;<br>

<dd>Jose Luis<br><br>

<dd>Oliver Wesp &lt;wesp@gdv.com&gt;</i></b> wrote:<br>

<dd>Hi,<br><br>

<dd>you're on the right way to avoid the &quot;Native library cannot be
loaded <br>

<dd>twice&quot; error. Your JavaMapscript-Class implements a singleton so
it's <br>

<dd>loaded only once in Tomcat. But you should not add your mapscript
code <br>

<dd>to this class. Whenever you change the class Tomcat tries to reload
and <br>

<dd>complains about the library already loaded.<br>

<dd>Write a second class and load the library with<br><br>

<dd>JavaMapscript.getInstance();<br><br>

<dd>Add your mapscript code to that class and you should be
fine.<br><br>

<dd>best regards<br>

<dd>Oliver<br><br>

<dd>Jose Luis Gonzalez wrote:<br>

<dd>&gt; Hi to all<br>

<dd>&gt; I would implement mapserver in tomcat as servlet but I have
found a lot of<br>

<dd>&gt; problems in start with it!<br>

<dd>&gt; <br>

<dd>&gt; So:<br>

<dd>&gt; 1) is there sites that implement mapserver as servlet in tomcat
that I can<br>

<dd>&gt; view?<br>

<dd>&gt; 2) Some one have a piece of basic code that I can compile as
servlet in<br>

<dd>&gt; tomcat for view how it run? I have load the java Howto.<br>

<dd>&gt; <br>

<dd>&gt; Do you have examples so I can see how can I work<br>

<dd>&gt; with mapserver functions and servlets?<br>

<dd>&gt; I have been seeing the wiki, but I can not really find what I
want.<br>

<dd>&gt; <br>

<dd>&gt; I have done the example of loading a library that apears
in:<br>

<dd>&gt; <br>

<dd>&gt;
<a href="http://www.unicolet.org/mapserver/tomcat.html" eudora="autourl">http://www.unicolet.org/mapserver/tomcat.html</a>
<br>

<dd>&gt; <br>

<dd>&gt; <br>

<dd>&gt; and it works, but when I want to complete the JavaMapscript.java code <br>

<dd>&gt; with other<br>

<dd>&gt; mapserver comands, it doesn't work:<br>

<dd>&gt; <br>

<dd>&gt; import edu.umn.gis.mapscript.*;<br>

<dd>&gt; <br>

<dd>&gt; public class JavaMapscript {<br>

<dd>&gt; private static JavaMapscript instance=null;<br>

<dd>&gt; <br>

<dd>&gt; private JavaMapscript() {<br>

<dd>&gt; try {<br>

<dd>&gt; System.loadLibrary(&quot;mapscript&quot;);<br>

<dd>&gt; } catch (Exception e) {<br>

<dd>&gt; e.printStackTrace();<br>

<dd>&gt; System.err.println(&quot;* error loading native library *&quot;);<br>

<dd>&gt; System.err.println(&quot;Error is: &quot;+e);<br>

<dd>&gt; }<br>

<dd>&gt; System.out.println(&quot; * mapscript native library loaded *&quot;);<br>

<dd>&gt; mapObj map = new mapObj(&quot;test.map&quot;);<br>

<dd>&gt; imageObj img = map.draw();<br>

<dd>&gt; //img.save(&quot;result&quot;, map);*/<br>

<dd>&gt; }<br>

<dd>&gt; <br>

<dd>&gt; public static JavaMapscript getInstance() {<br>

<dd>&gt; System.out.println(&quot;Try to instantiate Mapscript&quot;);<br>

<dd>&gt; System.out.flush();<br>

<dd>&gt; if ( instance == null ) {<br>

<dd>&gt; instance = new JavaMapscript();<br>

<dd>&gt; }<br>

<dd>&gt; return instance;<br>

<dd>&gt; }<br>

<dd>&gt; }<br>

<dd>&gt; <br>

<dd>&gt; And even worse, when I do any modifications and I put the new .class <br>

<dd>&gt; file in the<br>

<dd>&gt; server, I have an error because it says that the library was already <br>

<dd>&gt; loaded, and<br>

<dd>&gt; my only solution now to solve it is to turn off the server and turn it <br>

<dd>&gt; on again.<br>

<dd>&gt; <br>

<dd>&gt; Hope someone can help me<br>

<dd>&gt; <br>

<dd>&gt; Thank you<br>

<dd>&gt; <br>

<dd>&gt; Jose Luis<br>

<dd>&gt; <br>

<dd>&gt; ------------------------------------------------------------------------<br>

<dd>&gt; <br>

<dd>&gt; Nuevo Correo Yahoo! <br>

<dd>&gt; <br>

<dd>&gt; <br><br>
<br>

<dd>-- <br>

<dd>Dipl.-Geogr. Oliver Wesp<br>

<dd>Gesellschaft fuer geografische Datenverarbeitung<br>

<dd>Binger Strasse 49-51<br>

<dd>D-55218 Ingelheim<br>

<dd>fon: +49 6132 714818<br>

<dd>fax: +49 6132 714828<br>

<dd>http: <a href="http://www.gdv.com/" eudora="autourl">www.gdv.com</a><br><br>

</dl><br>
<br>
<a href="http://es.rd.yahoo.com/mail_es/tagline/mail/image/*http://es.mail.yahoo.com"><img src="http://eur.i1.yimg.com/eur.yimg.com/i/es/mail/mails.gif" width=230 height=80 alt="Nuevo Correo Yahoo!"></a><br>
</blockquote></body>
</html>