NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Lak, On Fri, 27 Aug 2004, Valliappa Lakshmanan wrote: > Thanks, Ugo. I was not aware that you could specify a headless > environment that way. > I think this is the right way to go, because ultimately, I want to > create images > using VisAD within a servlet, and servlets are headless. > > I added -Djava.awt.headless=true to the invocation of the java VM > when I ran my test program. > I now get a InitializerException thrown from DisplayImplJ3D.initialize() > because > VisADConfig.makeConfig calls getDefaultScreenDevice() which throws > a java.awt.HeadlessException. > I'm thinking that: > (a) if I'm creating an offscreen DisplayImplJ3D, it should not be > asking for a default screen device. > or (b) DisplayImplJ3D.initialize() should gracefully handle a headless case. Good idea. However, the VisADCanvasJ3D constructor needs a non-null GraphicsConfiguration to pass as an argument to the super() constructor for its parent Canvas3D class. I took a quick look at the GraphicsConfiguration, GraphicsDevice and GraphicsEnvironment JavaDocs but couldn't see an obvious way to construct a GraphicsConfiguration without a GraphicsDevice. If you or someone else can suggest a way, we can catch the java.awt.HeadlessException in VisADCanvasJ3D.makeConfig() and use your alternative. There is hopefully an easy way to do this that my quick look missed. Thanks, Bill
visad
archives: