osgi原理与最佳实践dictionary的例子,按照书上的文字一步步的建立了四个project,但是报名是自己写的,没有注意太多,DictQuery、LocalDictQuery、RemoteDictQuery的Activator包名、Service接口和Local、Remote的实现的包名都相同,启动后发现LocalDictQuery和RemoteDictQuery都是RESOLVED状态,start了下,竟然抛出一堆堆栈
org.osgi.framework.BundleException: Exception in com.kingdee.eas.Activator.start() of bundle RemoteDictQuery.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
...(省略)
Caused by: java.lang.NoClassDefFoundError: com/kingdee/eas/query/RemoteDictQueryService
at com.kingdee.eas.Activator.start(Activator.java:19)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
百思不得其解,打断点进去,也的确是抛出了异常。忽然想到上午看到一帖子,说处理遗留系统,经常遇到NullPointerException之类的异常,就是跟每个bundle单独一个classloader有关,有一些懂jvm底层的,问题处理起来会好些。于是想是不是跟包名有关。试着改了包名,重启,ss,竟然是ACTIVE了。真是晕菜,这也有影响,不过现在还没入门还是不好找原因的,先记录下来吧。
分享到:
相关推荐
总之,这个压缩包和相关博客文章为我们提供了一个学习OSGi实战经验的机会,涵盖了从基础概念到具体实践的多个方面。通过研究源码和工具,我们可以深入理解OSGi如何实现模块化,以及如何利用这一技术来构建更灵活、更...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它...通过这个例子,学习者不仅可以了解OSGi的基本概念,还能实际操作并看到模块化系统的动态行为,这对于深入理解和掌握OSGi技术至关重要。
通过这个例子,你可以了解到如何在实际项目中设置和运行一个简单的OSGi应用。 1. **创建OSGi Bundle** 在OSGi中,最小的部署单元被称为Bundle,它类似于Java中的JAR文件,但包含额外的元数据来描述其依赖和其他...
本示例通过一个名为“myself”的工程,展示了如何利用OSGi来处理版本冲突。 在Java开发中,常常会遇到类加载器冲突,特别是当多个项目依赖于不同版本的相同库时。例如,一个项目可能依赖于库A的v1.0,而另一个项目...
1. **OSGI模块创建**:首先,你需要了解如何创建一个OSGI模块,这通常涉及到编写MANIFEST.MF文件,声明模块的依赖和导出的包。例如,OSGI.Api可能是提供公共接口的模块,OSGI.Ui可能是用户界面模块,而OSGI.Impl则是...
在"OSGi例子(用户登陆)"这个项目中,我们看到三个关键的bundle:FileValidatorBundle、LdapValidatorBundle和UserValidatorBundle,它们可能分别实现了不同的用户登录验证机制。 1. **FileValidatorBundle**: ...
dist.rar可能是一个分发包,包含了运行OSGI应用所需的所有文件,而code.rar可能包含了源代码,供学习者查看和实验。 通过阅读"OSGI实战.pdf",结合"dist.rar"和"code.rar"中的示例,你可以更直观地了解OSGI的用法,...
总之,这个例子为我们提供了一个实际操作的平台,帮助我们理解如何在IntelliJ IDEA 13中结合Maven和OSGi进行开发。通过这个实例,我们可以学习到OSGi的模块化概念,Maven的项目构建流程,以及IntelliJ IDEA中如何...
本教程将详细讲解如何将OSGI部署为一个可运行的例子,帮助你了解其基本概念和操作流程。 一、OSGI基础 1. 模块化系统:OSGI的核心是模块化,每个模块称为一个Bundle,每个Bundle都包含类、资源和元数据,它们有...
1. **模块化**:OSGI的核心就是模块化,每个bundle都是一个独立的模块,有自己的类路径和生命周期。在这些例子中,你可以看到如何定义和组织bundle,以及如何通过MANIFEST.MF文件声明依赖关系。 2. **服务注册与...
本示例以“基于OSGI的Web开发例子”为主题,主要介绍了如何利用Equinox框架在OSGi环境中进行Web应用的开发,通过一个简单的“Hello World”项目来展示其工作原理。 首先,我们需要理解Equinox。Equinox是Eclipse...
在OSGi的层面,我们需要创建一个名为MANIFEST.MF的文件,声明我们的bundle(模块)的依赖和提供服务。例如,我们需要声明对Spring和Spring-DM的依赖,以及CalculatorService的提供。 最后,提供的“整合代码”可能...
### 开发一个简单的 OSGi Web 应用实例 #### 一、项目概述 本教程旨在通过一个具体的示例来介绍如何使用OSGi框架开发一个简单的Web应用。这个示例应用能够计算两个数字的和或乘积,并展示了OSGi bundle的动态部署...
描述中提到,这个例子包括了ECLIPSE下的OSGi平台包,这意味着我们可以利用Eclipse IDE来辅助开发和测试OSGi应用。设置`JAVA_HOME`和`BIN`环境变量是为了确保Java编译器`javac`的可用性,这是任何Java项目的基础。 ...
2. "深入理解OSGi:Equinox原理、应用与最佳实践":Equinox是OSGi的一个实现,该书深入探讨了其原理,并结合实际应用给出了最佳实践指导。 3. "OSGi原理与最佳实践(精选版)":这可能是对原书的精简版,重点介绍OSGi...
在OSGi环境中,每个bundle都是一个自包含的单元,拥有自己的类加载器,可以独立地加载、启动、停止和更新,而不会影响其他bundle。这一特性使得OSGi特别适合于大型复杂系统,尤其是需要频繁迭代和扩展的项目。 创建...
1. **OSGI模块系统**:OSGI的核心是模块系统,每个模块称为一个bundle。每个bundle包含一组类和资源,有自己的命名空间和类加载器。Bundle之间通过导出和导入包来实现依赖关系,确保了模块间的隔离性。 2. **生命...
标题中的“乱凑的一个osgi的demo”表明这是一个关于OSGi(Open Service Gateway Initiative)的示例项目,可能是一个简单的实现或演示了OSGi框架的基本功能。OSGi是一种Java模块化系统,它允许动态地发现、加载和...
5. **EnqiNX和OSGI的关系**:EnqiNX是一个基于OSGI的开源企业应用框架,它扩展了OSGI规范,提供了更高级的企业级功能,如安全管理、配置管理、事件管理和事务管理等。 6. **插件模块开发**:如何设计和实现OSGI插件...