设为首页 收藏本站
查看: 1086|回复: 0

[经验分享] 搭建equinox+内嵌jetty+jsp环境

[复制链接]
发表于 2017-2-27 11:41:57 | 显示全部楼层 |阅读模式
  *概述
  基于equinox+内嵌jetty+jsp的组合,开发web程序,并且支持jsp特性(如jstl等),通过这种组合就可以将osgi服务,web技术和eclipse插件开发等的优点结合在一起,主要的优点在于天然的osgi支持,功能的复用,最后的应用程序具有整体性.
  以下将说明如何在eclipse搭建环境,以支持前述开发框架.(注,我的环境Eclipse3.7+wtp)
  *第一步,添加需要的插件,
  这里要分成2步骤:
  1)配置jsp应用插件依赖的插件,如下面我的plugin.xml截图
DSC0000.png

  2)添加独立的插件,如jetty插件等
  可以通过在debug配置中->osgi framework->新建一个配置页,来方便查找和测试.
  以下2张是我的配置(IDE_SRV)的截图,供参考.
DSC0001.png

DSC0002.png

  注,
  1)其他的一些插件,可以通过右侧按钮"Add Required Bundles"添加;
  2)debug时,若80端口被占用,就需要自定义http的端口,如我的VM arguments是:"-Declipse.ignoreApp=true -Dosgi.noShutdown=true  -Dorg.osgi.service.http.port=10000".
  *第二步,配置开发jsp的插件,支持完整的jsp特性,其实就是如何让内嵌的jetty找到需要的资源
  1)以我的插件为例,先建立2个目录:"/WebContent/",存放jsp内容,这个名字可以随便取."/WEB-INF/",存放web应用的配置,如web.xml,tld,lib库等,这个就是固定的名称.
  注,a)这里的"/"表示插件的根目录.b)我使用默认的httpContent,即org.eclipse.equinox.http.servlet.internal.DefaultHttpContext,所以像"/WEB-INF/"就需要放在插件根目录,可是试试配置扩展点org.eclipse.equinox.http.registry.httpcontexts,来修改默认的设置.
  如图,
DSC0003.png

  2)通过扩展点配置http资源目录
  ---以我的配置为例


DSC0004.gif DSC0005.gif
注册资源<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.equinox.http.registry.resources"> <!--定义资源路径-->
<resource
alias="/auth/images"
base-name="/WebContent/auth/images">  <!--图片目录-->
</resource>
<resource
alias="/auth/css"
base-name="/WebContent/auth/css">    <!--css目录-->
</resource>
<resource
alias="/auth/js"
base-name="/WebContent/auth/js">    <!--js目录-->
</resource>
</extension>
<extension
point="org.eclipse.equinox.http.registry.servlets"> <!--定义servlet-->
<servlet   
alias="/auth/*.jsp"
class="org.eclipse.equinox.jsp.jasper.registry.JSPFactory:/WebContent/auth/">  <!--注意,jsp定义方式,比较特别-->
</servlet>
</extension>
</plugin>
  ---org.eclipse.equinox.http.registry.resources
  配置web资源路径,如images,js,css目录等,这样jetty就知道如何找到资源了,
  如代码:  <img src="/auth/images/sys.gif" />
  ---org.eclipse.equinox.http.registry.servlets
  定义jsp的目录,如我的测试文件test.jsp放在/WebContent/auth/test.jsp,那么在浏览器中应输入"http:localhost:10000/auth/test.jsp"
  3)添加jstl库等
  ---把jstl库放入classpath,我使用的是apache的实现,有2个jar包:jstl.jar和standard.jar.
  如图,
DSC0006.png

  注,这里就体现出独立部署的war和在插件开发中的不同:独立部署的war在"/WEB-INF/lib/"是默认的查找路径,而插件开发中需要把库添加到"Bundle-ClassPath".
  为了分离web需要的库和插件的库,所以按照一般的约定将其放在"/WEB-INF/"下,其实不必如此.
  ---在"/WEB-INF/"下建立web.xml,若没有这个文件,启动时会报错给你
  ---最后,别忘了在"Build"页选中需要的资源
  *最后,参看下我的MANIFEST.MF



MANIFEST.MFManifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Servlets
Bundle-SymbolicName: galaxy.ide.service.auth.servlets;singleton:=true
Bundle-Version: 1.0.0.qualifier
Import-Package: galaxy.ide.service.auth,
javax.servlet;version="2.5.0",
javax.servlet.http;version="2.5.0",
org.osgi.framework;version="1.3.0",
org.osgi.service.http;version="1.2.1"
Service-Component: OSGI-INF/component.xml
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Require-Bundle: galaxy.ide.auth;bundle-version="1.0.0",      //依赖的插件
org.eclipse.equinox.jsp.jasper;bundle-version="1.0.300",
org.eclipse.equinox.http.registry,
org.eclipse.equinox.jsp.jasper.registry;bundle-version="1.0.200",
javax.servlet.jsp;bundle-version="2.0.0"
Bundle-ClassPath: .,
WEB-INF/lib/jstl.jar, //添加jstl库
WEB-INF/lib/standard.jar,
WEB-INF/classes/
  *总结
  ---equinox已经提供了内嵌jetty和jsp的插件支持,包括提供了扩展点,所以构建环境的基本要素已经有了,需要的是自己合理的配置
  ---本文结合我的工程示例,给出了eclipse插件方式开发jsp的环境搭建过程和注意事项,其核心思想是2点:
  1)添加需要的插件,包括jetty,jsp插件,注意除了应用插件外,要加上需要的独立的插件
  2)通过扩展点的方式定义jsp资源路径.注意的地方是,将内嵌jetty处理jsp时,需要的库和WEB-INF等的配置资源,以插件的方式组织好.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-347939-1-1.html 上篇帖子: Jetty 类加载器体系结构 下篇帖子: Jetty 源码分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表