- 浏览: 1599879 次
- 性别:
文章分类
- 全部博客 (2929)
- 非技术 (18)
- Eclipse (11)
- JAVA (31)
- 正则表达式 (0)
- J2EE (4)
- DOS命令 (2)
- WEB前端 (52)
- JavaScript (69)
- 数据库 (8)
- 设计模式 (0)
- JFreechart (1)
- 操作系统 (1)
- 互联网 (10)
- EasyMock (1)
- jQuery (5)
- Struts2 (12)
- Spring (24)
- 浏览器 (16)
- OGNL (1)
- WebService (12)
- OSGi (14)
- 软件 (10)
- Tomcat (2)
- Ext (3)
- SiteMesh (2)
- 开源软件 (2)
- Hibernate (2)
- Quartz (6)
- iBatis (2)
最新评论
【51CTO精选译文】本文是《你好,OSGi 》系列的第九部分。之前已经完成了使用Spring DM构建简单应用并导入导出服务套件的过程,下面将介绍Spring DataSource的使用。顾名思义,Spring DataSource用于完成Spring应用程序与数据库直接的联络。
51CTO编辑推荐: OSGi入门与实践全攻略
使用 Spring DataSource
Spring框架的长处之一在于它为处理常见需求提供了一组预制的bean。在最后这个小节中,我们将学习Spring DM如何允许用户访问基于OSGi应用程序中的这些预制bean。
在这个练习中,我们将修改 ContactDAO套件,使它连接到一个RDBMS,来与联络表互动。对于连接管理,我们将使用Spring DataSource (org.springframework.jdbc.datasource.DriverManagerDataSource) 类。请注意 Spring 的 DataSource 是 org.springframework.bundle.spring.jdbc 服务套件的一部分。在这个练习中,我使用 Apache Derby 来测试应用程序的代码;你也可以使用你喜欢的数据库。
该练习的第一步是在你的数据库中创建联络表。可以使用代码清单 11 中的 DDL 脚本创建这个 CONTACT 表。
代码清单 11. CONTACT 表的 DDL
CREATE TABLE CONTACT(
CONTACTID int NOT NULL,
FIRSTNAME varchar(300),
LASTNAME varchar(300)
);
对于连接管理,我们想使用 Spring 的 DriverManagerDataSource bean。问题在于, DriverManagerDataSource 类是 spring.jdbc 套件的一部分,而后者为了完成其工作需访问你的 JDBC 驱动程序类。要解决该依赖性,最简单的方法是将你的 JDBC 驱动程序 JAR 导入到 spring.jdbc 套件中。
第一步,右键点击 org.springframework.bundle.spring.jdbc 套件,然后点击 New --> Folder。将该文件夹命名为“JARs folder”。
接着,右键点击新创建的 JARs folder,然后点击 Import --> General --> File System。在 From Directory 下,File System 对话框应显示包含你的 JDBC 驱动程序 JAR 目录的问题。对于我,该位置是 C:/software/db-derby-10.2.2.0-bin/lib。 选择该位置,将在 Select 框中显示 JAR 列表。选择 derbyclient.jar(如果你使用的是 Derby)然后单击完成。Eclipse 将 derbyclient.jar 导入到你的 JARs folder 中。
导入 JDBC 驱动程序 JAR 的最后一步是将其添加到你的套件路径中。为此,在 Plug-in Manifest Editor 编辑器中打开 org.springframework.bundle.spring.jdbc 套件的 MANIFEST.MF 文件。然后切换到 Runtimes 标签栏并选择 jars/derbyclient.jar,如图 3 所示。
图 3. 将 derbyclient.jar 添加到套件路径
(如果你喜欢,可以收到更新 bundle-classpath 条目至:Bundle-ClassPath: spring-jdbc-2.5.jar, jars/derbyclient.jar。)
现在,我们已经准备好了,可以通过将 JDBC 代码修改 ContactDAOImpl 类的实现,用来与 CONTACT 表互动。如果你需要,可以从本文的示例代码导入这个 ContactDAOImpl.java;或者只需使用如代码清单 12 中所示的内容。
代码清单 12. RDBMS 访问的 ContactDAO 实现 - ContactDAOImpl.java
public class ContactDAOImpl implements ContactDAO {
DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public List getContactList() {
List contactList = new ArrayList();
try {
Connection connection = dataSource.getConnection();
Statement stmt= connection.createStatement();
ResultSet rs =stmt.executeQuery("SELECT * FROM CONTACT");
while(rs.next()){
int contactId = rs.getInt("CONTACTID");
String firstName = rs.getString("FIRSTNAME");
String lastName = rs.getString("LASTNAME");
Contact contact = new Contact(contactId,firstName,lastName);
contactList.add(contact);
}
} catch (SQLException e) {
e.printStackTrace();
}
return contactList;
}
//
}
你会注意到在代码清单 12 中 ContactDAOImpl.java 有几处修改:
首先,我们添加了作为 Java bean 属性的 dataSource,包含相应的 getter 和 setter。Spring 将负责创建 DataSource 对象以及将其导入到 ContactDAOImpl。
getContactList() 方法从数据源(datasource)获取连接,然后使用它来检索 CONTACT 表中的所有联络记录。请注意,代码清单 12 是 ContactDAOImpl.java 的一部分代码;完整的代码请查看示例代码。
ContactDAOImpl 已经准备就绪,我们要做的最后一步是修改 ContactDAO 套件中的 contactdao-service.xm,代码如代码清单13 所示:
代码清单 13. 更新 Spring 语境文件 - contactdao-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="contactDAOService"
class="com.javaworld.sample.osgi.spring.contact.impl.ContactDAOImpl">
<property name="dataSource" >
<ref bean="dataSource" />
</property>
</bean>
<bean name="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.apache.derby.jdbc.ClientDriver" />
<property name="url"
value="jdbc:derby://localhost:1527/C:/derby_home/databases/ClientDB" />
<property name="username" value="test" />
<property name="password" value="test" />
</bean>
</beans>
contactdao-service.xml 的修改如下:
◆我们声明了一个 dataSource bean,指向org.springframework.jdbc.datasource.DriverManagerDataSource。这配置了 Spring,来负责应用程序的数据库连接管理。(请确保在你的 bean 定义中使用你的数据库专用的 JDBC 属性。)
◆接着,我们修改 contactDAOService 的定义来添加对于 dataSource bean 的依赖性。
这样,利用 Spring DM构建的 HelloWorld 服务应用程序已经准备好了。当在 Equinox 容器中执行该应用程序时,它将在应用程序启动时在控制台上输出联络列表。
总结
OSGi 规范为 Spring 应用程序的开发引入了模块化和动态服务。对于已经熟悉 Spring 编程和配置的开发者,Spring DM代表了一种更为简易的入口,可以学习 OSGi 的动态、模块化的开发规范,而无需学习 OSGi API。正如你在本文中所看到的,Spring DM对于 OSGi 中的面向服务应用程序开发是一个非常棒的平台。在一个正在运行的系统中,使用 Spring DM编写的应用程序模块能够动态地进行添加、移除和更新,而且你还可以同时部署指定模块的多个版本。
发表评论
-
OSGi是什么:Java语言的动态模块系统
2010-05-31 14:19 615之前51CTO曾发过一篇文章叫做《OSGi为什么重要:向模块化 ... -
OSGi Bundle之Hello World
2010-05-31 14:20 654本文是《你 好,OSGi 》系列的第二部分。之前曾介绍过O ... -
OSGi依赖性管理:Bundle访问域
2010-05-31 16:12 657本文是《你 好,OSGi 》系列的第三部分。之前介绍过OS ... -
OSGi服务:非常适合SOA的架构
2010-05-31 16:35 737本文是《你 好,OSGi 》系列的第四部分。下面讲述OSG ... -
OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
2010-05-31 17:46 996【51CTO精选译文】本文 ... -
OSGi与Spring:设置Spring DM开发环境
2010-06-01 09:46 600【51CTO精选译文】本文 ... -
使用Spring DM创建Hello World,以及OSGi服务
2010-06-01 13:24 736【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
使用OSGi构建面向服务的联络管理应用程序
2010-06-01 14:44 696【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
初探OSGi Web应用开发利器Equinox:环境设置
2010-06-07 12:55 776【51CTO精选译文】在之前的《你好,OSGi》系列 中, ... -
打造一个Hello World OSGi Web应用程序
2010-06-07 12:59 541【51CTO精选译文】在《你好,OSGi 》的之前一篇文章 ... -
部署并运行你的OSGi Web应用程序
2010-06-07 13:02 403【51CTO精选译文】本文 ... -
打造一个基于OSGi的Web Application
2010-06-12 09:51 1162动机和目标 OSGi技术 ... -
OSGi中获取Service的几种方式
2010-06-12 10:01 728在OSGi中,Service是动态管理的,OSGi容器提供 ...
相关推荐
osig与spring:springDM开发环境配置,eclipse配置osgi开发环境,及命令
Spring-DM指的是 Spring ...Spring-DM 的主要目的是能够方便地将 Spring 框架和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环境中,利用OSGi框架提供的服务,将应用变得 更加模块化。
osgi springdm.pdf
学习SpringDM+OSGI的一些总结,自我学习,上传文档防止丢失。
《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的...
NULL 博文链接:https://springsfeng.iteye.com/blog/1271565
关于OSGi当前流行技术的介绍,是OSGi入门首选~~
java 未来10年:OSGi、Spring_DM
osgi_spring_dm_jrosgi_spring_dm_jrosgi_spring_dm_jrosgi_spring_dm_jrosgi_spring_dm_jr
基于OSGi和Spring开发Web应用
* Building modular services using OSGi with Spring DM and Spring Dynamic Modules and SpringSource dm Server. * Delivering web applications with Spring Web Flow, Spring MVC, Spring Portals, Struts, ...
OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用博文源码
基于OSGi和Spring开发Web应用
基于OSGi和Spring开发Web应用教程 教程
至觉得用这种方式开发基于OSGi WEB应用比使用Spring DM Server更好至少目前你可以获得更好便携性(可以 在多个Spring DM支持OSGi平台上运行)并且Spring DM Server并没有提供更多企业应用支持 不过对于刚 使用Spring ...
基于OSGi和Spring开发Web应用的博文对应的代码
这是一本围绕OSGi及其在企业应用中的采纳情况进行描述的文档,对Spring和OSGI的原理和应用作了详细的阐述
一个基于spring dm server 的osgi 例子,描述了一个简单用户登陆的例子,不同的用户验证方式,用不同的bundle
NULL 博文链接:https://xmong.iteye.com/blog/1329804
Equinox、Apache Felix与Spring DM 工程创建工程发布