Eclipse带有其内置的Tomcat服务器,用于支持Eclipse的Help服务。 通常在打开Help页面的时候,Help系统会启动内置的Tomcat。我们在开发基于RCP的应用系统时,也同样可以通过API来启动并且使用这个内置的Tomcat服务器(尽管Eclipse没有提供相应的文档,并且不推荐使用这类功能)。
Eclipse的org.eclipse.help.internal.appserver包中,含有一个重要的类:WebappManager,几乎所有和Tomcat相关的操作,都和这个WebappManager有关,其中比较重要的几个方法是:
- getHost(),返回运行Tomcat的主机名或者IP地址
- getPort(),返回Tomcat监听的端口号,这个端口号在每次Tomcat启动时,都不一样
- start(String webappName, String pluginId, IPath path),启动应用程序,其中的pluginId为包含web应用的插件ID(后面做详细解释)
在了解了基本的方法以后,我们可以实验一下:
- 创建一个插件(plug-in): com.kompakar.webapp,这个插件可以不需要UI的支持
- 插件com.kompakar.webapp需要依赖以下Eclipse插件:
-
- org.eclipse.help.appserver
- org.eclipse.help.base
- 在com.kompakar.webapp目录下面,建立WEB-INF,WEB-INF/lib和WEB-INF/classes目录。 这里的WEB-INF目录结构和普通的web application完全一致,用于存放你的JSP,Servlet和classes。 如果你的web application需要其他库的支持,那么放在WEB-INF/lib下面。
- 启动Tomcat: WebappManager.start("myapp", "com.kompakar.webapp", Path.EMPTY); 在启动方法中:
-
- 第一个参数myapp就是web application的上下文目录;
- 第二个参数就是包含了web application的插件ID;
- 得到完整的URL: "http://" + WebappManager.getHost() + ":" + WebappManager.getPort();
-
- 这个操作返回的结果可能是:http://127.0.0.1:52235,最后的端口号是随机的
OK,如果你启动了你的插件,并且在WEB-INF下面有一个简单的index.jsp的话,打开你的浏览器,打开: http://127.0.0.1:52235/myapp,那么你就可以看到你的index.jsp了。 如果你的插件同时捆绑了Eclipse的Web Browser插件的话,你就可以在你的插件里打开浏览器,直接访问你的web application了。
这样做有什么好处吗? 其中的一个好处是,你可以把支持web的报表系统(比如BIRT)安装在一个特殊的插件中,那么你的桌面RCP系统就有一个支持web的报表系统了,你可以通过启动Tomcat来使用你的报表。
【参考文章】Use Embedded Tomcat in Eclipse for a Webapp
Technorati : eclipse