[Geoserver-devel] [jira] Created: (GEOS-160) Nice exception if JAI is not installed

Message:

  A new issue has been created in JIRA.

---------------------------------------------------------------------
View the issue:
  http://jira.codehaus.org/secure/ViewIssue.jspa?key=GEOS-160

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: GEOS-160
    Summary: Nice exception if JAI is not installed
       Type: Improvement

     Status: Open
   Priority: Minor

Original Estimate: Unknown
Time Spent: Unknown
  Remaining: Unknown

    Project: GeoServer
Components:
             WMS
   Versions:
             1.2.0

   Assignee: Gabriel Roldán
   Reporter: Pierrick Brihaye

    Created: Thu, 22 Apr 2004 2:58 PM
    Updated: Thu, 22 Apr 2004 2:58 PM
Environment: JDK 1.4.2_04, Windows 98

Description:
Hi,

I've made a clean installation of the JDK 1.4.2_04, i.e. without (yet) the JAI extension.

http://localhost:8080/geoserver/wms?request=GetMap&layers=bc_roads&bbox=489153,5433000,529000,5460816&width=800&height=400&srs=EPSG:27354&styles=normal&Format=image/png

... returns an exception whose stack trace is :

UNCAUGHT EXCEPTION: java.lang.NoClassDefFoundError: javax/media/jai/ComponentSampleModelJAI at org.geotools.io.image.TextImageReader$Spi.<clinit>(TextImageReader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:219) at sun.misc.Service$LazyIterator.next(Service.java:270) at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:174) at javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:113) at javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:134) at javax.imageio.ImageIO.<clinit>(ImageIO.java:46) at org.vfny.geoserver.responses.wms.map.JAIMapResponse.getSupportedFormats(JAIMapResponse.java:114) at org.vfny.geoserver.responses.wms.GetMapResponse.<clinit>(GetMapResponse.java:51) at org.vfny.geoserver.servlets.wms.GetMap.getResponseHandler(GetMap.java:45) at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:347) at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:233) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.vfny.geoserver.servlets.wms.WmsDispatcher.doResponse(WmsDispatcher.java:135) at org.vfny.geoserver.servlets.wms.WmsDispatcher.doGet(WmsDispatcher.java:106) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) at java.lang.Thread.run(Thread.java:534)

and (this may not be related with JAI however) http://localhost:8080/geoserver/wms?request=GetMap&layers=bc_roads&bbox=489153,5433000,529000,5460816&width=800&height=400&srs=EPSG:27354&styles=normal&Format=image/svg+xml

... returns an exception whose stack trace is :

UNCAUGHT EXCEPTION: java.lang.NoClassDefFoundError at org.vfny.geoserver.servlets.wms.GetMap.getResponseHandler(GetMap.java:45) at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:347) at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:233) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.vfny.geoserver.servlets.wms.WmsDispatcher.doResponse(WmsDispatcher.java:135) at org.vfny.geoserver.servlets.wms.WmsDispatcher.doGet(WmsDispatcher.java:106) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) at java.lang.Thread.run(Thread.java:534)

I don't know of an elegant way to detect if JAI is installed (maybe a Class.forName() call ?) but, IMHO, those exceptions should be caught an return a more user-friendly message.

OK : stack traces are now archived, I can now install the JAI extension and continue my tests :slight_smile:

Cheers,

p.b.

---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira