tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dgchristen...@comcast.net
Subject Re: Running Swing app under Tomcat 6 on Linux
Date Tue, 01 May 2012 17:39:07 GMT

----- Original Message -----
> From: "Mark Eggers" <its_toasted@yahoo.com>
> To: "Tomcat Users List" <users@tomcat.apache.org>
> 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" <its_toasted@yahoo.com>
> >>  To: "Tomcat Users List" <users@tomcat.apache.org>
> >>  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: "dgchristensen@comcast.net"
> > <dgchristensen@comcast.net>
> >>>  To: users@tomcat.apache.org
> >>>  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: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message