Spring Web Application应用到OSGI环境 一 (转)
关键字: osgi spring web关于本文
本文记录了将Spring Web
Application应用到OSGI环境中,也就是OSGI Web应用。
[请点击这里下载本文的Eclipse工程]
org.phrancol.osgi.demo.launcher工程中启动应用。
一、准备工作
1,JDK
1.5
2,Eclipse 3.3-jee (MyEclipse)
3,Spring-framework-2.1-m3
4,Spring-osgi-1.0-m2
二、搭建环境
1,首先当然需要一个Http
Server,那就用Eclipse自带的Jetty吧。
2,将Jetty和它的依赖包作为 Plugin 工程导入Eclipse, Import
-> Plug-ins and fragments -> Next
3,创建一个普通工程做为Eclipse Launch的存放目录 org.phrancol.osgi.demo.launcher
4,Open
Run Dialog ... -> OSGI Framework -> New Configuration
,名字改为org.phrancol.osgi.demo.web.launcher,在
Common面板Save as 里面的 Shared
file指定目录到 org.phrancol.osgi.demo.launcher
6,在OSGI输入exit退出,(注:如果不退出,那么它将驻留内存,大概会消耗20K的内存)
三、Equinox/Spring-osgi环境
导入Spring-osgi和它的依赖包(注:导入Spring包的时候,plug-in Location 要指定Spring-osgi的lib目录),导入完毕后,形成的project结构如下图

四、jpetstore
使用Spring自带的jpetstore,代码和配置文件都是现成的,能省去一些不必要的开发。
五、首页
jpetstore默认是springmvc,向HttpService注册Servlet或是Resource,jpetstore里面需要注册的servlet就是ContextLoaderServlet和DispatcherServlet,resource则是view层的jsp等。
1,创建个plug-in project ,OSGI Framework选择Equinox,创建Activator,org.phrancol.osgi.jpetstore.springmvc
2,创建一个web目录,这个目录就是web应用的目录,将jpetstore里面的WEB-INF/jsp目录拷贝进去
3,在 META-INF 目录中创建 dispatcher 目录,将petstore-servlet.xml拷贝进去,修改成如下代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--
- DispatcherServlet application context for the Spring web MVC
- implementation of JPetStore's web tier.
-->
<beans>
<!-- ========================= VIEW DEFINITIONS ========================= -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/web/jsp/spring/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- ========================= DEFINITIONS OF PUBLIC CONTROLLERS ========================= -->
<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/shop/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="index"/>
</bean>
</beans>
4,在Activator的start(BundleContext context)里面注册servlet和resource,代码如下
public void start(BundleContext context) throws Exception {
ServiceReference sr = context.getServiceReference(HttpService.class
.getName());
HttpService httpService = (HttpService) context.getService(sr);
httpService.registerResources("/", "/web", null);
httpService.registerServlet("/*.jsp", new JspServlet(context
.getBundle(), "/web/jsp"), null, null);
Dictionary<String, String> initparams = new Hashtable<String, String>();
initparams.put("load-on-startup", "1");
DispatcherServlet dispatcherServlet = new DispatcherServlet();
dispatcherServlet
.setContextConfigLocation("META-INF/dispatcher/petstore-servlet.xml");
initparams = new Hashtable<String, String>();
initparams.put("servlet-name", "petstore");
initparams.put("load-on-startup", "2");
httpService.registerServlet("/*.do", dispatcherServlet, initparams,
null);
}注意依赖包关系
启动后,在访问http://localhost/shop/index.do页面,报错,看来要解决一下标签库问题,在web目录中建立一个WEB-INF目录,将c.tld,
fmt.tld拷贝进去,然后在osgi控制台refresh springmvc,再访问这个页面,发现没有图片,把jpetstore/images目录拷贝到web目录下,再refresh一下,OK,首页出来了。
六、结束语
这部分简单记录了如何使用springmvc,下部分将记录如何将jpetstore的各个层通过spring-osgi应用起来
发表评论
- 浏览: 230305 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
我的相册
共 10 张
最近加入圈子
最新评论
-
Chrome开发团队曝光 多人 ...
很好很强大
-- by jasin2008 -
用javascript与java进行RS ...
好强啊,谢谢了
-- by wv1124 -
分享下ubuntu 7.10的界面
把这些东西组装一下就于是有了我们的联想~
-- by citi.sh -
使用prototype.js选择选中 ...
用图片模拟实现超漂亮的选框checkbox效果 http://www.csspl ...
-- by goagrass -
名言系列(三)
如果想要获得成功,那么就需要对一个领域足够了解,热爱这个行业并保持热情.“如果想 ...
-- by sunxboy








评论排行榜