随笔 - 1  文章 - 37  trackbacks - 0
<2019年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

test

搜索

  •  

最新评论

关于本文
本文记录了将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

5,Apply,  Run ,可以看到一个Launch已经生成,通过Console可以看到Jetty也成功启动
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"), nullnull);
        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应用起来

posted on 2007-09-06 14:09 Phrancol Yang 阅读(6033) 评论(9)  编辑  收藏 所属分类: OSGI

FeedBack:
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-09-08 12:45 Friszart
写得很清晰!  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-10-31 10:25 fangzx
谢谢作者,写的非常清楚,条理分明。准备照做一下。

下载本文的Eclipse工程: 下载不了!  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-10-31 21:31 Phrancol Yang
可以下载啊,我刚刚才试的,这个blog提供的空间太小,所以就放到免费的网络硬盘上了,可能有些不稳定,多试一下  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-10-31 21:40 Fangzx
Phrancol Yang,谢谢回复。不过,还是无法下载。

1、我发现了类似的Blog文章:
http://thegoodthebadtheugly.wordpress.com/2007/05/20/springosgi/7
希望本文作者能多提供技术支持,整个过程问题太多了,比较痛苦。

2、我按照本文步骤做了一下,不过我用的是 :
spring-framework-2.5-rc1
spring-osgi-1.0-m3
最后遇到问题,找不到下面的插件:
javax.servlet.jsp.jstl.fmt
org.apache.taglibs.standard.tag.common.fmt
不知道到哪里下载?

3、发现 spring-osgi-1.0-m3中好像少了很多插件,所以只能重新下载spring-osgi-1.0-m2,从其中提取了很多插件。

4、我的ss内容:

id State Bundle
0 ACTIVE org.eclipse.osgi_3.3.1.R33x_v20070828
1 INSTALLED org.springframework.bundle.spring.webmvc_2.5.0.rc1
2 ACTIVE org.springframework.osgi.spring-osgi-extender_1.0.0.m3
3 ACTIVE org.mortbay.jetty_5.1.11.v200706111724
4 ACTIVE org.eclipse.osgi.services_3.1.200.v20070605
5 ACTIVE org.eclipse.equinox.http.servlet_1.0.1.R33x_v20070816
6 ACTIVE org.eclipse.equinox.http.jetty_1.0.1.R33x_v20070816
7 INSTALLED org.springframework.osgi.jstl.osgi_1.1.2.SNAPSHOT
8 ACTIVE org.apache.commons.logging_1.0.4.v200706111724
9 ACTIVE org.springframework.osgi.spring-osgi-io_1.0.0.m3
10 ACTIVE javax.servlet.jsp_2.0.0.v200706191603
11 ACTIVE javax.servlet_2.4.0.v200706111738
12 ACTIVE org.eclipse.equinox.jsp.jasper_1.0.1.R33x_v20070816
13 ACTIVE org.springframework.osgi.aopalliance.osgi_1.0.0.SNAPSHOT
14 ACTIVE org.springframework.bundle.spring.core_2.5.0.rc1
15 ACTIVE org.springframework.bundle.spring.context_2.5.0.rc1
16 ACTIVE org.springframework.osgi.spring-osgi-core_1.0.0.m3
17 ACTIVE org.springframework.osgi.cglib-nodep.osgi_2.1.3.SNAPSHOT
18 ACTIVE org.springframework.bundle.spring.web_2.5.0.rc1
19 ACTIVE org.springframework.bundle.spring.beans_2.5.0.rc1
20 ACTIVE org.springframework.bundle.spring.aop_2.5.0.rc1
21 ACTIVE org.apache.commons.el_1.0.0.v200706111724
22 INSTALLED org.phrancol.osgi.jpetstore.springmvc_1.0.0
23 ACTIVE org.apache.jasper_5.5.17.v200706111724

  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-10-31 22:53 Fangzx
@Phrancol Yang
非常感谢你的回复。用IE可以下载了(原来用FF)。
我会加你的QQ,期望得到你的更多的指教。  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-11-19 10:58 gembin
请点击这里下载本文的Eclipse工程]

无法下载+!

如何下载?

Gembin@gmail.com  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2007-11-19 15:50 Phrancol
免费网络硬盘,你在“立即提取文件”栏目中点一下‘提取’,会进入下载页面  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2008-02-13 10:23 delphixp
@Phrancol

点击"提取" 按钮, 没任何反应....  回复  更多评论
  
# re: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 显示首页 2008-02-14 16:25 Phrancol Yang
用IE浏览器  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: