----- Original Message ----- > From: "Mark Eggers" <[email protected]> > To: "Tomcat Users List" <[email protected]> > Sent: Monday, April 30, 2012 12:23:57 AM > Subject: Re: Running Swing app under Tomcat 6 on Linux > Comment inline. > ====== Comment ====== > > > I don't know what magic the Ubuntu repackaging does. If it's anything > like the CentOS repackaging, it's pretty involved. > > One thing you might try is the following: > > 1. sudo service tomcat6 stop > 2. Download a copy of Tomcat from Apache > 3. Unpack it in your home directory > 4. Edit $CATALINA_HOME/conf/tomcat-users.xml > 5. Add your application to $CATALINA_HOME/webapps > 6. export JRE_HOME=[your Java JRE installation] > 7. cd $CATALINA_HOME/bin > 8. Make sure startup.sh is executable > 9. ./startup.sh > > And see what happens.
Mark, you are a genius. I followed the above and the Swing app starts without a problem. If anybody's willing to explain it, I'd like to understand what the difference is between starting Tomcat via startup.sh and starting it as a service. Thanks again, DG > > Also, run /sbin/chkconfig tomcat6 > > If it's on at level 3, then it's been started before there's an X > display. However, you'd think running > > sudo service tomcat6 start > > would then fail since it should already be running. I wonder if you're > running two copies of Tomcat 6, and you've placed your application in > the webapps directory started at run level 3. > > ====== Comment ====== > > > >> I've tried running startup.sh directly from the console but it > > doesn't work. It looks like /etc/init.d/tomcat6 sets up some env > > vars > > before starting Tomcat. I can try updating my environment so I can > > run > > startup.sh if you think it worth attempting. > > > >> Please don't top-post. Answer inline instead. > >> > >> Tomcat has no knowledge of Swing, so or UI components of this > >> nature. > >> Is there a reason it has to be started from Tomcat? > > > > The app needs to be running in the same JVM as the Tomcat > > applications so it can > > access some of the application's objects. Some day I may re-write it > > to use > > JMX but that's a big change that won't happen soon. Getting it to > > run > > as a "normal" Swing app under Tomcat is the expedient solution for > > now. > > > > I was assuming (perhaps wrongly) that Swing was just a collection of > > classes > > that didn't need any special environment (other than a running X > > server). > > > >> p > > > >> Thanks, > >> DG > >> > >> ----- Original Message ----- > >> From: "Mark Eggers" <[email protected]> > >> To: "Tomcat Users List" <[email protected]> > >> Sent: Saturday, April 28, 2012 6:50:07 PM > >> Subject: Re: Running Swing app under Tomcat 6 on Linux > >> > >> Comments and questions are in line. Please note I run Fedora / > >> CentOS / > > Redhat and I'm not so familiar with Ubuntu. > >> > >> ----- Original Message ----- > >> > >>> From: "[email protected]" > > <[email protected]> > >>> To: [email protected] > >>> Cc: > >>> Sent: Saturday, April 28, 2012 1:11 PM > >>> Subject: Running Swing app under Tomcat 6 on Linux > >>> > >>> My version info: > >>> > >>> • Tomcat 6.0.28 > >>> • Java 1.6 > >>> • Ubuntu 10.4 > >>> > >>> > >>> I have a small debugging/monitoring app written in Java/Swing > >>> that > > I'd like > >>> to run inside Tomcat to help with debugging. The app is started > >>> by > >>> dynamically loading the monitoring class from a webservice > >>> running > > under > >>> Tomcat. The works in Windows (multiple flavors) but I'm having > > problems > >>> getting this running on Ubuntu. What I've tried so far: > >> > >> What does this give you that monitoring the application via JMX > >> (see > > VisualVM, jconsole), and debugging with your favorite IDE (NetBeans, > > Eclipse, > > IntelliJ) doesn't give you? You can actually do both locally as well > > as > > remotely (with a little bit of setup). > >> > >>> > >>> 1) First error I got was an Headless exception. Since the app is > >>> a GUI > > app I > >>> can't run in headless mode. After searching around I changed > > Tomcat's > >>> library path (via -Djava.library.path in catalina.sh) to point to > >>> the > >>> client lib (ie. .../java-6-sun-1.6.0.26/jre/lib/i386/client) > >>> instead of > > the > >>> server lib. > >> > >> Try setting JRE_HOME in the environment to point to a JRE > >> installation > > instead. Or use JAVA_HOME and point to the JDK. Tomcat will figure > > things out. > >> > >> If your environment is not set up by default to do that (mine is > >> with > > custom.sh in /etc/profiles.d), create and use a setenv.sh script in > > CATALINA_HOME. In this set any CATALINA_OPTS, JAVA_OPTS, and other > > environment > > variables you need to. > >> > >>> > >>> 2) After changing the libs the next error was that DISPLAY wasn't > > set. After > >>> setting DISPLAY=0.0 in catalina.sh I get "Can't connect to X11 > > with > >>> DISPLAY=0.0" error. I've tried different values for DISPLAY > > (e.g. > >>> localhost:0.0) and nothing makes a difference. I've also tried > > fiddling > >>> around with the policies in case there's a permissions error. See > > below for > >>> the call stack. > >> > >> Are you running an X server? By that, are I mean is Ubuntu showing > >> up in > > whatever GUI you've chosen (I guess Gnome 2 is that version's > > default)? > >> > >> If you only have a command line interface, then there's no place > >> to > > create the screen. You can play games with a virtual frame buffer, > > but that will > > just allow your program to run, but without any screen output > > (obviously). > >> > >> Again, don't set the DISPLAY environment variable in catalina.sh. > >> Set > > this in setenv.sh in the bin directory of CATALINA_HOME. There are > > lots of > > scenarios here. Three common ones come to mind. > >> > >> 1. Local X server > >> > >> You're at the console and running in a GUI environment. The > >> display > > environment variable should already be set (typically :0.0). If you > > start Tomcat > > with your application in this environment, the GUI interface should > > just appear. > > > >> > >> 2. Remote client, accessing the GUI via a VNC server (such as > >> TightVNC) > >> > >> Your display environment should already be set. For example, I'm > > currently on a remote CentOS 5.8 system via VNC. My DISPLAY > > environment variable > > is set to :0.2. If you start Tomcat with your application in this > > environment, > > the GUI interface should just appear in the VNC viewer (for example > > TightVNC). > >> > >> 3. Remote client, X server > >> > >> Note that an X server means your PC is serving the screen, > >> keyboard, and > > mouse to a remote client (your application). To accomplish this > > you'll have > > to have an X server running (if you're on Windows, try XMing), and > > you'll have to set the DISPLAY variable appropriately. Running Java > > swing > > applications in this fashion is not very pleasant especially if your > > program is > > graphics-intensive. > >> > >>> The webservice app is a simple RESTEasy implementation. Since > >>> this > > works in > >>> Windows I'm assuming (perhaps erroneously) that this can work in > > Linux. Any > >>> help would be appreciated. > >>> > >>> Thanks, > >>> DG > >>> > >>> java . lang . InternalError : Can 't connect to X11 window server > > using > >>> ' : 0 . 0 ' as the value of the DISPLAY variable. > >>> sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) > >>> > > sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52) > >>> sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:155) > >>> java.security.AccessController.doPrivileged(Native Method) > >>> > > sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131) > >>> java.lang.Class.forName0(Native Method) > >>> java.lang.Class.forName(Class.java:169) > >>> > > java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) > > > >>> > >>> java.awt.Window.init(Window.java:380) > >>> java.awt.Window.<init>(Window.java:433) > >>> java.awt.Frame.<init>(Frame.java:403) > >>> java.awt.Frame.<init>(Frame.java:368) > >>> javax.swing.JFrame.<init>(JFrame.java:158) > >>> > > com.quinsoft.zeidon.objectbrowser.ObjectBrowser.startup(ObjectBrowser.java:60) > >>> > >> > >> > >> This should work just fine if you're running an X server on your > >> Ubuntu > > system. The DISPLAY environment variable should be :0.0 (no spaces) > > for a local > > machine. > >> > >> . . . . just my two cents. > >> /mde/ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
