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!

Procedure
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

Conclusion
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.

1 comment:

aliyaa said...

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