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