环境:
Eclipse Modeling Tools
Version: Indigo Service Release 2
Build id: 20120216-1857
操作系统:win7
tomcat: apache-tomcat-7.0.27
1、 简单操作(在bridge基础上再添加jar)
主页:
http://eclipse.org/equinox/server/http_in_container.php
http://eclipse.org/equinox/server/downloads/bridge.war
基本操作:
http://developer.51cto.com/art/200910/157948.htm
2、 通过eclipse product生成可运行的程序,然后嵌入到tomcat
(这里需要稍稍的了解类的加载。)
demo.zip 在 sample.http 的基础上增加了product打包功能,导入eclipse modeling后,打开/sample.server/server-web.product,点击·Launch an Eclipse application·,然后在浏览器中输入http://localhost/helloworld (启动后jetty默认端口为80)会看到“Hello World -- sample servlet”。
嵌入到tomcat,需要对bridge/WEB-INF/eclipse进行修改。
由于tomcat启动是已经加载了servlet-api(即javax.servlet),同时由于使用tomcat取代jetty作为容器。
1、 如果存在引用javax.servlet bundle。获取该插件的源码,分别打开${BUNDLE}/META-INF/MANIFEST.MF。切换到`Dependencies`页签,删除`Required Plug-ins`中javax.servlet,在`Imported Packages`中添加javax.servlet, javax.servlet.http。
2、 打开server-web.product,导出可运行的程序。
3、 文件处理
删除导出的 product-export/eclipse/plugins/ 下的 jetty.server 和 javax.servlet 的包。
同时,bridge/WEB-INF/eclipse/plugins仅保留org.eclipse.equinox.http.servletbridge和org.eclipse.update.configurator。(其他的包在product-export/eclipse/plugins/已经包含了)
拷贝 product-export\eclipse 下全部的文件到bridge/WEB-INF/eclipse
4、 配置文件bridge/WEB-INF/eclipse/configuration/config.ini
修改加载与启动的bundle。
打开config.ini, org.eclipse.update.configurator和org.eclipse.equinox.http.servletbridge; 删除 javax.servlet 和 org.mortbay.jetty.server 的加载项。
(仅进行了粗略的处理,org.eclipse.equinox.launcher应该也还可以去掉)
all-in-one.zip处理了后面的三个步骤,运行deploy.bat,然后把all-in-one/bridge/WEB-INF目录(是整个WEB-INF目录)拷贝到webapps/ROOT/目录下即可。
刚开始遇到同样的问题。在正常启动前,还没有处理掉javax.servlet插件。可能导致加载了不同jar中的的servlet类(javax.servlet bundle与servlet-api jar):
Reason: Missing Constraint: Import-Package:
org.eclipse.equinox.servletbridge; version="1.0.0"
http://www.eclipse.org/forums/index.php/mv/tree/34715/
查看的相关文章:
http://eclipse.org/equinox/server/http_in_container.php
http://www.geclipse.eu/fileadmin/Documents/Guides/deployment.pdf
http://eclipse.dzone.com/articles/embedding-osgi-tomcat
http://developer.51cto.com/art/200910/157948.htm
http://www.blogjava.net/Phrancol/articles/267508.html
源码地址:
:pserver:dev.eclipse.org:/cvsroot/rt,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.servletbridge
:pserver:dev.eclipse.org:/cvsroot/rt,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge
https://github.com/winse/hello/tree/ca902237e03c05f13c7a3cf838de48c825d98dc4