﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-程序人生</title><link>http://www.blogjava.net/zhenyu33154/</link><description>在Java中摸爬滚打的日子</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:04:33 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:04:33 GMT</pubDate><ttl>60</ttl><item><title>基于OSGi的Web应用开发系列四（提供支撑的Bundles）</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/06/26/324561.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Sat, 26 Jun 2010 08:24:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/06/26/324561.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/324561.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/06/26/324561.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/324561.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/324561.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 提供支撑的Bundles---&nbsp;潇湘振宇 2010-06-26&nbsp;&nbsp;上一篇中，我们已经为这基于OSGi的Web应用搭建了项目框架，但其中涉及到有几个支撑OSGi环境下的SSH框架的Bundles的改造或提供未曾给大家详细介绍。本篇内容就是为详细介绍这几个Bundles的作用及创建的过程。CGLIB的改造Cglib的改造曾在系列一中有提到，为了解决...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhenyu33154/archive/2010/06/26/324561.html'>阅读全文</a><img src ="http://www.blogjava.net/zhenyu33154/aggbug/324561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-06-26 16:24 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/06/26/324561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于OSGi的Web应用开发系列三（搭建项目框架）</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/06/20/324015.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Sun, 20 Jun 2010 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/06/20/324015.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/324015.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/06/20/324015.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/324015.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/324015.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过新建一个基于Maven的OSGi的Web应用框架，来介绍OSGi的Web应用框架的搭建过程。基于这项目框架，你可以添加自己的业务模块进来，很容易就能使之应用于实际项目中……&nbsp;&nbsp;<a href='http://www.blogjava.net/zhenyu33154/archive/2010/06/20/324015.html'>阅读全文</a><img src ="http://www.blogjava.net/zhenyu33154/aggbug/324015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-06-20 22:09 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/06/20/324015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于OSGi的Web应用开发系列二（工具介绍）</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323604.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Tue, 15 Jun 2010 04:06:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323604.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/323604.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/323604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/323604.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这一篇，我将向大家介绍几个常用的工具，因为本人在OSGi的项目开发中，得益于这几个工具，因此有必要向大家逐一介绍。这几个工具分别是：Maven、Pax-construct、Pax-runner。当然我们开发必定少不了IDE工具，我所使用的IDE工具是Eclipse，对于IDE的使用我就不多说了。<br />
&nbsp;&nbsp;&nbsp; 开发基于OSGi的Web应用，我有两种比较开发方式，一种是借助Maven跟相关的一些Maven插件，比如上面说到的Pax-construct、Pax-runner、还有Maven的bnd插件。另一种开发方式则是以Plug-in的方式开发。两种方式各有其优劣。在本系列文章中，我会分别介绍这两种开发方式。<br />
<strong><br />
Maven简介： &nbsp;&nbsp; </strong><br />
&nbsp;&nbsp;&nbsp; Maven是一个很不错的项目管理工具，其插件之多，也就说明了其功能之广。但本文不会详细的来介绍Maven的各种插件，这里只会简略的说一下Maven在开发基于OSGi的Web应用中所带来的便利之处及存在的弊端。<br />
&nbsp;&nbsp;&nbsp;
Maven的好处：<br />
&nbsp;&nbsp;&nbsp; 1、方便管理项目的组织结构<br />
&nbsp;&nbsp;&nbsp; 2、方便管理项目对第三方包的依赖关系<br />
&nbsp;&nbsp;&nbsp; 3、方便项目的构建<br />
&nbsp;&nbsp;&nbsp; 4、方便项目在持续集成中的应用<br />
&nbsp;&nbsp;&nbsp;
Maven的弊端：<br />
&nbsp;&nbsp;&nbsp; 1、在项目中，经常会出现IDE被阻塞的情况，尤其在Maven子工程比较多的情况下。<br />
&nbsp;&nbsp;&nbsp; 2、当项目是快照版时，如果没有设置好快照版更新策略的话，将会浪费掉你很多宝贵的开发时间。<br />
&nbsp;&nbsp;&nbsp;
Maven的使用很简单，但要用好也还是需要花不少时间来了解其各种相关的插件的功能。这里简单的讲一下maven的使用，如果你用过，可以跳过这部分内容。<br />
&nbsp;&nbsp;&nbsp; Maven的安装很简单，从Apache官方网站（http://maven.apache.org）下载安装包，解压到自己指定的目录下，配置一个M2_HOME的系统环境变量就可以使用了。你可以在命令行下，输入mvn关键字就可以看出Maven已经可以正常工作了，前提条件是存在有Java的运行时环境。<br />
&nbsp;&nbsp;&nbsp; 第一次运行mvn后，Maven会在当前用户的根目录生成一个.m2的文件夹，里面有一个repository的文件夹，这是Maven的本地仓库目录，你可以通过修改settings.xml文件来更改此repository的位置，这个settings.xml文件可以在Maven的解压目录下的conf目录中找到，最好是将settings.xml文件拷贝到用户目录下的.m2文件夹中，因为运行maven的命令时，其最先会去.m2的文件夹中查找有没有settings.xml文件，这是属于用户级的配置，而在%M2_HOME%/conf/settings.xml则是属于全局性的配置，在Eclpse的Maven插件也需要有.m2下的settings.xml文件。关于安装Eclipse的Maven插件可以参考http://m2eclipse.sonatyper.org。有关Maven更详细的资料大家可以到网上搜一下，会有大把的资料供学习。<br />
<span style="font-weight: bold;"><br />
Pax-construct简介:</span><br />
&nbsp;&nbsp; Pax-construct是一个生成OSGi的Maven项目的脚本工具，其安装使用也很简单。官方网址是：http://wiki.ops4j.org/display/paxconstruct/Pax+Construct，下载最新版本1.4解压到本地目录后，将其bin目录添加到环境变量PATH中，就可以使用了。其Quickstart主页地址是：http://www.ops4j.org/projects/pax/construct/index.html，有关详细使用，大家可以参考官方资料，你也可以按照本系列教程中的步骤来作学习使用。<br />
<br />
<span style="font-weight: bold;">Pax-runner简介：<br />
&nbsp;&nbsp;&nbsp; </span>Pax-runner是用来运行此OSGi的Maven项目的一个脚本工具，这里我们主要用到其基于Maven的插件。其官方网址是：http://paxrunner.ops4j.org/space/Pax+Runner。其安装跟Pax-construct一样，使用则更为简单。这里就不详细细说了。<br />
<br />
<strong>bnd简介：</strong><br />
&nbsp;&nbsp;&nbsp; bnd是一个将普通jar包转换成符合OSGi的bundle的工具，其官方网址是：http://www.aqute.biz/Code/Bnd，这工具在这里大家不需要太多的关注，因为使用Pax-construct构建项目时，就已经把其集成进来了，大家需要关注的是项目根目录下的osgi.bnd配置文件。这个配置文件是项目用Maven打包时给bnd的一个附加的配置文件。具体如何使用请关注后文。<br />
&nbsp;&nbsp;&nbsp; <br />
<strong>总结：</strong><br />
&nbsp;&nbsp;&nbsp; 以上介绍的Pax的两个工具construct跟runner均是使用于在本文说的第一种开发方式，这种开发方式的好处在于开发人员不需要过多的关注OSGi Bundle的东西，精力主要放在业务代码的开发上，但需要开发人员注意一些相关的事项。而第二种开发方式则是基于Eclipse的Plug-in的方式，这就需要大家对OSGi的概念比较清楚，而这种开发方式在工具上的使用有了Eclipse就行，当然如果有Maven来管理项目那也是好事。但整体上讲对开发人员的要求会高一些。<br />
<br />
<img src ="http://www.blogjava.net/zhenyu33154/aggbug/323604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-06-15 12:06 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于OSGi的Web应用开发系列一（前言）</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323586.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Mon, 14 Jun 2010 16:17:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323586.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/323586.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323586.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/323586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/323586.html</trackback:ping><description><![CDATA[<strong>概述：</strong> &nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 接触OSGi已经有两三年了，而真正运用OSGi于项目之中，也将近两年。这两年来，因为OSGi的不太成熟也让我饱受历练。<br />
&nbsp;&nbsp;&nbsp; 如果你对OSGi这个名词有点陌生，那本系列教程就不太适合你了，如果你想学习本系列教程，请你先去了解OSGi的相关概念。<br />
&nbsp;&nbsp;&nbsp; 拽写本系列教程的目的在于给想要在企业应用中使用OSGi技术的同学朋友们以实际经验指导，希望能给你带来收获。<br />
<strong>名词解释：</strong><br />
&nbsp;&nbsp;&nbsp; OSGi：OSGi是Open Service Gateway Initiative的简称，可以称是一种技术，也可以称是一个平台，亦可称之为一种规范。<br />
&nbsp;&nbsp;&nbsp; Bundle：OSGi中最重要的元素之一，也是OSGi中最小的物理元素。它是一个jar包，但它持有一份能够进行自我描述的元数据文件（MANIFEST.MF），虽然普通的jar包中也存在有MANIFEST.MF文件，但非Bundle的jar的MANIFEST.MF文件中缺少进行自我描述的元数据信息。<br />
&nbsp;&nbsp;&nbsp; Equinox：OSGi的一个参考实现，也是Eclipse3.2+的核心。<br />
&nbsp;&nbsp;&nbsp; SSH脚手架：SSH脚手架是指由Struts+Spring+Hibernate组合在一起的开发框架。<br />
&nbsp;&nbsp;&nbsp; Spring-DM：Spring-DM是SpringDynamicModules的简称，是由SpringSource提供的，致力于整合Spring框架和OSGi平台的一个框架。<br />
&nbsp;&nbsp;&nbsp; Plug-in：这里的Plug-in指基于OSGi技术的插件工程。<br />
&nbsp;&nbsp;&nbsp; Maven：用来管理项目依赖及构建的一个脚本工具。<br />
&nbsp;&nbsp;&nbsp; EBR：这里的EBR是SpringSource提供的Enterprise Bundle Repository的简称<br />
<strong>入门要求：</strong><br />
&nbsp;&nbsp;&nbsp; 学习本系列教程的同学需要了解SSH脚手架，熟悉Eclipse IDE开发，对Maven有一定的了解。<br />
<strong>前期准备</strong>：<br />
&nbsp;&nbsp;&nbsp; JDK1.6+<br />
&nbsp;&nbsp;&nbsp; Eclipse3.4+<br />
&nbsp;&nbsp;&nbsp; Spring2.5.6+<br />
&nbsp;&nbsp;&nbsp; Spring-DM1.1.2+<br />
&nbsp;&nbsp;&nbsp; Maven2.0.9+<br />
&nbsp;&nbsp;&nbsp; EBR访问地址：http://www.springsource.com/repository/app<br />
<strong>需要解决的问题</strong><br />
&nbsp;&nbsp;&nbsp; 要使SSH脚手架能够正常运行于OSGi环境，那我们首先要解决的问题有三。其一是cglib的类加载器的改造，其二是解决数据库驱动包跟数据库连接池缺少依赖的问题，其三就是整理运行于OSGi环境下的SSH脚手架需要依赖的Bundle对象。<br />
&nbsp;&nbsp;&nbsp; 也许有人会说，要让Java应用程序运行OSGi那有什么困难的呢？当然，解决问题的手段多种多样，但要创建一个标准的OSGi基于OSGi的应用程序，还确实不是那么的简单。<br />
&nbsp;&nbsp;&nbsp; 解决了以上所说的三个问题，基于SSH开发OSGi应用就不成问题。但该如何解决以上三个问题呢，以及解决了以上三个问题后如何来规范这种基于OSGi环境下的SSH开发呢，又该如何保证开发效率能够保持在或更优于以往开发非OSGi应用时等一系列问题呢。要想了解如何解决，敬请关注本系列文章。<br />
<br />
<br />
<img src ="http://www.blogjava.net/zhenyu33154/aggbug/323586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-06-15 00:17 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/06/15/323586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Xmarks与中国互联网折腾的日子</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/06/13/323478.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Sat, 12 Jun 2010 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/06/13/323478.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/323478.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/06/13/323478.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/323478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/323478.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;
用Xmarks书签工具已经有好几年了，以前叫做Foxmarks，不记得是在零八年还是零九年改名的。反正我觉得这个插件是在Firefox的所有插件中最为有用的插件之一，也是FF中最好用的书签插件。如果没有了这么方便的书签工具，实在感觉是太不爽了。<br />
&nbsp;&nbsp;
自从国内开始整顿互联网开始，不知道Xmarks的哪跟筋得罪了国内某机关单位，结果被墙了。之前发现Xmarks无法同步书签时，在网上搜索到使Xmarks重新复活的方法是在操作系统的etc目录下的hosts文件中添加域名解析记录。如下：<br />
64.147.188.86 www.xmarks.com<br />
64.147.188.92 api.xmarks.com<br />
64.147.188.89 login.xmarks.com<br />
173.239.65.22 login.xmarks.com<br />
64.147.188.87 sync.xmarks.com<br />
64.147.188.86 static.xmarks.com<br />
64.147.188.86 download.xmarks.com<br />
64.147.188.86 my.xmarks.com<br />
添加了这个还是不够的，你还需要在插件里面选择加密所有内容才行。<br />
&nbsp;&nbsp;
但好景不长，到今年五月下旬，Xmarks又停止了正常动作，这真是认人郁闷至极呀。当时在网上搜了一下，但没有找到有用的信息。因此折中的用了GMarks作为替代产品使感受了几天，结果发现GMarks的使用实现是太难用了，没有Xmarks一半的好用。于是决定再次寻找Xmarks复活的良药，在Google中不断的搜索，缩小搜索的时间范围，终于还是找到了有用信息。<br />
原来Xmarks有几个服务器更新了IP地址，可能是因为那几个更新IP地址的服务器以前的IP地址被&#8220;人&#8221;做了手脚吧！更新后的配置如下：<br />
64.147.188.86 www.xmarks.com<br />
#64.147.188.92 api.xmarks.com<br />
173.239.65.21 api.xmarks.com<br />
#64.147.188.89 login.xmarks.com<br />
173.239.65.22 login.xmarks.com<br />
#64.147.188.87 sync.xmarks.com<br />
173.239.65.23 sync.xmarks.com<br />
64.147.188.86 static.xmarks.com<br />
64.147.188.86 download.xmarks.com<br />
64.147.188.86 my.xmarks.com<br />
保存hosts文件后，点击xmarks的同步，果然，再一次出现了久违的&#8220;Syncing Successfully&#8221;!<br />
还不知道什么时候Xmarks又会出现那个令人郁闷的红色醒目的小问号！！！<br />
<img src ="http://www.blogjava.net/zhenyu33154/aggbug/323478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-06-13 00:00 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/06/13/323478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java实现视频条码解析</title><link>http://www.blogjava.net/zhenyu33154/archive/2010/05/23/zhenyu.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Sun, 23 May 2010 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/archive/2010/05/23/zhenyu.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/321208.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/archive/2010/05/23/zhenyu.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/321208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/321208.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      条码解析在现在市场上有很多的产品，且在各类商场也随处可见其应用的踪影，如超市的收银处。条码枪跟条码数据采集器也是比较常见的。不过这些硬件都需要专门的采购，像一般的人开发人员或普通用户而言，很少接触这些硬件，对其工作原理也是不得而知。这里提供一个以大家常用的视频头捕捉条码的示例程序，供大家学习参考。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhenyu33154/archive/2010/05/23/zhenyu.html'>阅读全文</a><img src ="http://www.blogjava.net/zhenyu33154/aggbug/321208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-05-23 23:26 <a href="http://www.blogjava.net/zhenyu33154/archive/2010/05/23/zhenyu.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java RMI 入门指南</title><link>http://www.blogjava.net/zhenyu33154/articles/320245.html</link><dc:creator>潇湘振宇</dc:creator><author>潇湘振宇</author><pubDate>Thu, 06 May 2010 16:32:00 GMT</pubDate><guid>http://www.blogjava.net/zhenyu33154/articles/320245.html</guid><wfw:comment>http://www.blogjava.net/zhenyu33154/comments/320245.html</wfw:comment><comments>http://www.blogjava.net/zhenyu33154/articles/320245.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenyu33154/comments/commentRss/320245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenyu33154/services/trackbacks/320245.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; 开通博客也有好些天了，一直没有时间静下心来写博文，今天我就把两年前整理的一篇关于JAVA RMI入门级文章贴出来，供有这方面需要的同学们参考学习。RMI&nbsp;相关知识RMI全称是Remote&nbsp;Method&nbsp;Invocation－远程方法调用，Java&nbsp;RMI在JDK1.1中实现的，其威力就体现在它强大的开发分...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhenyu33154/articles/320245.html'>阅读全文</a><img src ="http://www.blogjava.net/zhenyu33154/aggbug/320245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenyu33154/" target="_blank">潇湘振宇</a> 2010-05-07 00:32 <a href="http://www.blogjava.net/zhenyu33154/articles/320245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>