jjzjj

java - 使用 OSGi 时是否可以进行字节码操作?

我正在制作anapplicationserver在其中我需要使用一些字节码操作(例如,将自定义equals和hashCode方法插入到用@Entity注释的类中)。现在我给JVM一个Java代理(-javaagent选项),它使用ASM进行字节码转换。.我一直在考虑使用OSGi,但我不知道它是否允许我进行必要的字节码操作。使用OSGi时是否可以进行字节码操作?怎么样?bundle是否可以声明自己,它需要一些字节码操作才能工作?例如,应用服务器需要操作它自己的一些核心类。是否可以指定一些其他包需要一些字节码操作,而该包不知道?例如,必须操纵在服务器上运行的所有应用程序,但应用程序不需要知

java - OSGi 和 Java EE - JOSGiEE?

看完thisarticle,我想到了一个问题:‘OSGi会变成JavaEE吗?OSGi会取代JavaEE吗?OSGi是否在增加JavaEE?从历史上看,OSGi确实与JavaEE完全不同,但考虑到现在EEG的结果,其中一些服务是JavaEE服务。另一个事实是,谁使用JavaEE将它用于其API,这与OSGi相矛盾,OSGi本应与API无关。我不确定它会去哪里,你们呢? 最佳答案 OSGi是容器技术。它与JavaEE技术无关,例如(例如)Servlet、JDBC、EJB、JMS等。它负责代码组件的打包(打包)及其管理。这可能会影响您打

java - 在服务启动时禁用 OSGi 服务的正确方法是什么?

我创建了一个带有公开(声明性)服务的OSGi包。如果我在调用activate时注意到有什么不对劲以至于我无法提供服务,我需要防止它被暴露。目前激活函数如下所示:publicvoidactivate(ComponentContextcontext,Mapproperties){pid=(String)properties.get(Constants.SERVICE_PID);try{...}catch(Exceptione){context.disableComponent(pid);}}另一种选择是像这样包装/传播异常(或抛出一个新异常,具体取决于):publicvoidactivat

java - 你如何从osgi中的字节反序列化一个对象

在我的osgi应用程序中,我有三个包,travel.api、table.api和utils。travel.api依赖于table.api,而table.api又依赖于utils。请注意,travel.api并不直接依赖于utils。我使用aQuteBnd生成list,我相信它工作正常。list如下所示。有一个名为PageData的类,它有一个类型为TableData的字段,而该字段又有一个类型为TestObject的字段。PageData位于travel.api,TableData位于table.api和TestObject位于utils中。加载bundle时,这一切都可以正常工作。当

java - 如何从 eclipse/osgi 应用程序中包含对 jar 文件的依赖?

我创建了一个Eclipse4应用程序,我需要一个jar提供一个功能作为我的应用程序的一部分(这可以是任何东西,例如log4j以使其变得微不足道)。我将jar添加为项目类路径的一部分(RightClick->ConfigureBuildPath),但在运行时我的服务因ClassNotFound错误而失败(我猜是来自OSGI?)。无论如何搜索结果,至少据我所知,我应该将jar添加为另一个Plugin的一部分,并创建从我的应用程序/服务到这个新插件的依赖关系。IE。我从现有的JAR文件中创建了一个插件项目。这次设置成功了。所以如果我理解这一点,在为Eclipse/OSGi开发时我们不应该直接

java - OSGi 是否从根本上与 JSR-223 脚本语言发现不兼容?

我最近编写了一种小型专业脚本语言,并使用Maven导出了一个OSGi兼容包,该包还将服务描述符导出到“META-INF/services/javax.script.ScriptEngineFactory"服务注册文件。问题在于,虽然OSGi导入和导出包很好,但服务注册表似乎与OSGi不兼容(因为OSGi将其bundle放在通用类路径之外,并对模块使用单独的类加载器)。我的问题是,我认为OSGi与服务发现机制不兼容是否正确,如果不是,我可以向我的包元数据添加什么以便ScriptEngineManager.getEngineFactories()将列出我的脚本引擎在OSGi环境中?

java - 将现有的 JAR 转换为 OSGi 包

我有一个JAR文件需要转换为OSGi包。我没有JAR文件的原始源代码。我尝试使用以下答案:HowtocreateOSGibundlefromjarlibrary?但是,它们已经过时了。编辑:我需要转换几个但固定数量的jar。 最佳答案 选项1-使用bnd-platform在期望频繁添加/更新Jar时,或者当您可以从Maven存储库检索依赖项时构建您的OSGi包我们使用bnd-platform(我也是作者)管理第三方依赖项并从中创建OSGi包。您可以将它与从Maven存储库和本地Jar中检索到的依赖项一起使用(请参阅README)。如

java - OSGi 基于角色的安全性

我正在寻找一个允许OSGi服务和CXF网络服务基于角色的安全性的安全框架。前段时间我已经使用了springsecurity,但是当我们现在切换到蓝图时,据我所知,它不再是一个选项。要配置访问规则,我想主要使用标准@RolesAllowedannotation.那么我最好的起点是什么?我也考虑过自己将其实现为蓝图扩展,但我更喜欢现有的解决方案。 最佳答案 我建议您改用ApacheShiro,http://shiro.apache.org/.它为身份验证、授权、加密和session管理提供简单的API。它还可以轻松部署在OSGI容器内。

java - 将现有 Java 项目转换为 OSGI 包的最佳方式

我们有很多组件,我们只想从中模块化几个。想知道从所有这些组件中创建bundle的最佳方法是什么(在我的构建环境中)?我的环境:Java6,Maven2.2.1,Hudson技术:Spring3.0.5、WebSphere7、Hibernate3.2.x和大多数apachecommons。要求仅对少数组件进行模块化。其余组件可以导出所有包。当导入到eclipse中时,我应该能够在构建路径中看到导入包的bundle作为依赖项(mvneclipse:eclipse似乎没有这样做) 最佳答案 首先仅更改MANIFEST.MF条目,使您的所有

java - 如何避免 eclipse 目标定义中的特定功能版本

我有一个分为3个存储库的osgi项目。每个存储库都有自己的内置到第谷的p2存储库中:Repo1->P2repo1Repo2->P2repo2Repo3->P2repo3此外,每个存储库都有一个目标定义文件,其中包括来自第三方p2存储库和另一个项目存储库(上面的P2repo1、P2repo2或P2repo3)的包。Repo2包含对Repo1包的依赖,Repo3对Repo1和Repo2包的依赖:Repo1TargetDefinition->EclipseOrbitP2Repo2TargetDefinition->EclipseOrbitP2,P2repo1Repo3TargetDefini