[这个贴子最后由无人喝彩在 2003/01/08 08:33pm 编辑]

简介
这个文章是为了帮助sun的系统管理员和java servlet的研发人员的。读者应该有X windows系统的知识连同理解/etc/rc*.d和/etc/init.d下的shell脚本的能力。

设想一下这样的情节:您做了一个伟大的servlet,生成了一个JPEG的图片,并且他在您的桌面系统运行的良好。现在您必须在服务器上来研发他。但服务器并不像您的桌面系统:没有键盘,没有鼠标,没有屏幕,甚至连一个显示器都没有。您曾听说过java平台上的图像是依附于X windows系统的,那您现在怎么办?

您能够在您的系统中建立一个Java 2 Platform Standard Edition (J2SE[tm])SDK和X Window系统。通过读下面的内容来学习如何在solaris 7,8和9上使用J2SE SDK v1.2.2,v1.3,和v1.4。在参考资料的那一节中介绍了如何在servlet中编程来创建图片,或在一个安装的servlet 引擎中(类似Tomcat)来创建。

最新的J2SE SDK和Solaris操作系统能够使这个工作更加简单。假如您使用J2SE V1.4,那么您甚至无需X server。并且,在Solaris9中系统提供了一个无需图像卡就能够使用的X server(Xvfb)。

假如您使用J2SE v1.3.x或v1.2.2,那么您的系统需要一个X server。X server是为桌面系统所设计的,他并不适合在服务器上使用。本文将提供一个简单的在服务器系统上利用/etc/rc*.d中的脚本来启动X的方法。

假如您想跳过如何安装,请直接跳到“如何运行”这一章。

Servlets和图像
您能够使用Java servlets来创建JPEG和PNG(portable network graphics)格式的图片并且把他们放到网页上发布。这时候您每天看到的是服务器端的图片--图片由web server来提供--servlets能够使用Java platform graphics APIs来产生或更改图片。servlets能够绘制图表,表格,连同图像;标记地图和照片;增加水印和密码(隐藏的信息);渲染3D模型等--任何在桌面Java平台应用所能够做的事情。

在Solaris操作系统上,Java图像平台需要依靠一个X server和一个硬件上的图像适配卡。假如没有X server,那么Java平台上的应用程式无法使用AWT,Java 2D[tm] API,Java 3D[tm] API,Java Advanced Imaging (JAI) API,或别的图像API。最近的变化是在Solaris9和J2SE V1.4中提供了简单的方法来配置Java 图像平台服务器。

J2SE v1.4--无需X server的Java 图像平台
最原始的Java 图像平台的API是为了使用层概念的Solaris图像平台所设计的。层概念是从X windows系统中提出的。在J2SE SDK V1.4中,一个命令行的选项能够使其不再需要X window系统。这个功能叫无头支持,在http://java.sun.com/j2se/1.4/docs/guide/awt/AWTChanges.html#headless中进行讨论。无头的选项不允许使用类似Java Foundation Classes(Swing)一类的GUI class,但能够使用图像渲染API,如:Java2D Java3D 或JAI
这个命令行的选项是:-djava.awt.headless=true
假如想知道更多的信息,请到http://soldc.sun.com/articles/solaris_graphics.html#1a

X Servers
X server是指X windows System。假如您使用的是J2SE v1.3.s或更早的版本,您需要一个X server来使用Java图像平台的APIs。在Solaris的操作系统中包含了很多不同的X server。但对于servlet来说,其中的两个是最重要的。
Xsun:一个X显示服务程式,/usr/openwin/bin/Xsun
Xvfb:一个X虚拟的帧缓冲器,一个纯软件的X server,/usr/openwin/bin/Xvfb

因为一个X server不但管理图像显示,也管理用户输入,所以他使用一个软件驱动来使用图像适配卡,键盘和鼠标。Xsun需要一个硬件的图像适配器,并且他通常需要使用一个鼠标和键盘--在有些情况下系统管理员并不想安装在服务器系统上。一个叫“Null keyboard adn mouse drivers”的程式排除了对鼠标和键盘的需求。这个空的设备在Solaris8中开始以一个补丁包的形式存在,而在Solaris9中,他们是默认存在的。但在更早的Solaris7中是不存在的,能够观看http://soldc.sun.com/articles/xsun.server这个脚本来学习使用一个命令行的选项使用这个空的设备。

为什么要使用Xsun?Xsun能够使图像适配卡加快使用Java 3D API和基于OpenGL的其他APIs的应用程式的运行速度。这些图像适配卡包括:Sun Creator3D, Sun Elite3D, Sun Expert3D, Sun Expert3D-Lite, Sun XVR-500, 和Sun XVR-1000。这些图像适配卡能够提供一些硬件上的对OpenGL的支持。

和Xsun正相反,Xvfb无需图像或I/O硬件--无需键盘和鼠标,并且他使用系统的RAM按理代替图像适配卡。假如不使用Java 3D和其他的基于OpenGL的APIs,那么Xvfb将是十分好用的。Sloaris9是第一个包含有Xvfb的系统,但Xvfb作为一个免费的X资源,任何人都能够得到和编译Xvfb,以便在更早的Solaris版本中使用。假如您使用了他,您也能够得到一些的支持。在参考资料那一节,列出了一些网站上有已编译好的Solaris系统下的Xvfb,但从安全和保密的角度考虑,您最好编译一个自己的Xvfb。参考网站为:http://www.x.org

在正常的命令选项中,Xsun需要用户登陆一个console。当用户登陆的使用,一个X server要在运行。和桌面系统不同的是:一个服务必须随时准备提供服务,就算没有任何用户登陆进来。这个服务必须在重起后就启动。在这里我将介绍如何配置而使使X server总是处于运行的状态。我也将介绍如何控制访问X server,这样只有被支持的进程才能够使用图像系统。

运行X server的用户必须同时也是运行servlet引擎的用户,当您要使用您的servlet引擎的时候,选择或创建好您的用户,不管他是个单独的servlet,如Tomcat,一个网页服务如Sun[tm] ONE Web Server或一个应用服务如IBM WebSphere Application Server 或BEA WebLogic Server的用户。在这个脚本里,默认的用户名是tomcat,因为我们假设您使用这个用户来运行Tomcat servlet引擎。

运行X Servers
一般情况下,在一个用户登陆的时候,dtlogin程式调用X server。但这对一个一天运行24小时然并自动重新启动的系统来说并不是个好注意。xsun.server和svfb.server这两个脚本提供了两种不同的运行X server的方法。使用他们的目的是使您的系统能够不被照顾的运行,并且在重新启动后能够无需任何操作就提供服务。

X server一般是由CDE下的dtlogin程式启动的。然后X server提供这样的机制:xdm和xinit来产生X server。他们是用来使X server能够被可户端交互使用。对使用Java servlets的X server来说,他们存在着缺陷。在这里我介绍两个/etc/rc*.d下的启动脚本来运行Xsun和Xvfb:xsun.server(http://soldc.sun.com/articles/xsun.server)和xvfb.server(

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!