现在公司使用的是架构师自己编写的框架,很多东西都是来自的一些开源的思想。其中用到一种OSGI的框架。OSGI早就听说过了,但是自己没有实际的验证过。正好这段时间也有时间,自己想搞点有技术含量的东西。在大禹的提示下,找到了bluedavy网站。(http://www.blogjava.net/BlueDavy/)下载了一份《OSGI_Opendoc.rar》文档开始学习。
我实际也是遇到了很多问题,到目前为止还是不清楚,OSGI是一种具体的什么框架,使用起来到底有多大的优势。? 这些问题,等我看完这篇文档,再给大家进行分享吧。我现在只是想记录下遇到的一些问题,希望能给后来的学习者有点提示吧。
1.OSGI环境问题,按照bluedavy大叔的提示,一步步实现代码到第六小节,开始发布自己的service。
按照文档说明,运行现在的服务。发现 UserValidatorWebBundle 是resolve状态,加载没有成功。
开始检测自己的环境,自己使用的 eclipse 是3.3.2版本,里边里边缺少没有对应的org.eclipse.equinox.servlet.api_1.0.0.v20060601.jar 包,到网上到处寻找,得到的答案是 在eclipse 3.1之后 ,这个包的名字已经变成 javax.servlet_2.4.0.v200706111738.jar。但是改成引入这个包之后,在运行的时候,系统一直找不到对应的servletHttp的class。 发现自己javax.servlet包的版本太低,然后在网上找到 javax.servlet_2.4.0.v200806031604.jar的版本,放入到piugins中,又出现了 找不到依赖的javax.servlet_2.4.0.v200706111738.jar包。郁闷。为这个问题折腾到晚上12点左右,没有办法第二天再来处理吧。
在路上我思考的结果是,eclipse 3.2版本在其他包在使用到了 javax.servlet_2.4.0.v200706111738.jar但是osgi有使用到了 javax.servlet_2.4.0.v200806031604.jar包中的类。这样换肯定会找不到对应的jar包。最后的答案还是换eclipse的开发环境吧。网上有人使用的eclipse 3.4版本的,能正常的运行,那就试试吧。
结果我从网上分配下载了 eclipse 3.4.1 、 3.4.2、3.5版本。 3.4.2、3.5版本的连创建plugin project的工程都找不到,3.4.1版本能创建项目但是导入系统的时候引入包都是有问题的,使用起来很不方便啊。哎。。看来这个问题不能这么解决。 感觉离答案越来越远。还是回到我亲爱的3.2版本吧。
在运行实例代码的时候,我发现里边有文档中提到的两个jar包,org.eclipse.equinox.servlet.api_1.0.0.v20060601.jar 包。那我导入eclipse中不就可以了吗? 导入尝试果然问题解决了,页面能正常访问了。哈哈。。