Thursday, July 5, 2007

Verifying a Virtual X-Server (Xvfb) Setup

With E-Business Suite Release 11i and Release 12, an X-Server display is required for correct configuration. The application framework uses this for generating dynamic images, graphs, etc. It is also needed by reports produced in bit-map format. Note that for functionality using Java technology, the “headless” support feature can be implemented (requires J2SE 1.4.2 or higher). However, reports that print graphical output still need an X-Server display.

The Solution Beacon recommendation is to install and configure Xvfb, the virtual frame buffer for X windows. A dedicated VNC server is another solution that can be used, but has a little more overhead and additional security concerns. See Oracle MetaLink note 181244.1 “Configuring VNC Or XVFB As The X Server For Applications 11i” for more information and setup guidelines. Also, a window manager such as Motif (MWM) or TWM running on the virutal display is neccessary for some reports to work correctly.

E-Business Suite Diagnostics will confirm correct X-Server setup, but other than running a report that creates the expected bit map output or displaying a page that creates a dynamic chart, there isn’t an easy way to visually check that the virtual X display is working…. enter the xwd and xwud utilites! The xwd utility allows you to “dump” a screen (even a virtual screen!) and the xwud allows you to “undump” the contents to another X window. So, how can these tools be used to verify an Xvfb setup? Read on to find out!

Using xwd to copy a virtual screen and then using xwud to send the screen to an X display, we can visually determine that Xvfb is setup and working correctly. To do this we need 1) a system running the Xvfb, and 2) another system running an X windows server. The process is to capture the image on the virtual screen and display it on a client screen of the system the X windows server. If the image displays correctly we know that the virtual X server is working correctly. The X windows server can be any garden-variety X system, either a Windows PC running Exceed, or an X display on a server running VNC.

The procedure is the following (commands are specific to Linux, other platforms may have different paths or have slightly different syntax for starting Xvfb):

1. On the server that runs the virtual X server, start Xvfb:
/usr/X11R6/bin/Xvfb :1 -ac -screen 0 1024x768x8 &
2. On the server running Xvfb, run the xclock client program:
xclock -display :1 &
3. On the system running the real X server, make sure X is running and clients can connect:
xhost +
4. On the server running Xvfb, get the window id for the xclock client
xwininfo -root -tree | grep xclock
5. On the server running Xvfb, use xwd to capture the window and xwud to send it to the X server
xwd -id 0x12345678 | xwud -display other_system:0.0

If all is working correctly, the xclock virtual window on the system running Xvfb should display on the screen of system running the X server. If not, the xclock client running on the Xvfb system would not create the clock image correctly and it would not be displayed on the other system.


vishus said...

Many thanks for making the effort to discuss this, I feel strongly about this and like studying a great deal more on this topic. If possible, as you gain knowledge, would you mind updating your webpage with a great deal more information? It's very helpful for me.
Luxembourg hotels

aliya seen said...

The length of ucas personal statement is based on what you really like for the students and for teachers so thank you.