Tag: osgi

你能在不同的OSGi包中使用JSF自定义组件吗?

有没有人一起使用OSGi和JSF? 我问,因为JSF使用类加载器魔术来查找自定义组件。 从教程(强调我的): 此配置文件最终将成为表示此组件的.jar文件中的META-INF / faces-config.xml。 JSF将在运行时加载的每个.jar文件中查找这样的文件名 (在.war文件的WEB-INF / lib目录中),并在其配置中使用它们。 通过这种方式,可以将多个组件.jar文件组合到一个Web应用程序中,并且每个.jar中描述的所有组件都可供应用程序使用。 我希望能够将JSF自定义组件作为OSGi包(即自定义组件与JSF运行时不同的OSGi包)以及JSF能够在运行时找到它们。 有没有人做过类似的事情?

Spring组件扫描在osgi容器中被破坏

我正在尝试将spring DI集成到现有的jaxws项目中。 我已经在tomcat本地工作但是当我部署到远程容器时,它似乎没有进行类路径扫描。 我可以在日志中看到,在tomcat上它将我的@Components注册为bean,但是在远程服务器上它们根本没有被提及。 我看到的是下面的堆栈跟踪。 它看起来像是我必须使用的古怪的Web容器。 它是“IBM i的集成应用程序服务器”。 http://www-03.ibm.com/systems/i/software/ias/我相信这是建立在eclipse架构上的,当你安装war文件时,它会将每个应用程序转换为一个包。 这很棒,但它打破了我的类路径扫描。 🙁 有人有解决方案吗? 谢谢 673 [Thread-6] WARN org.springframework.core.io.support.PathMatchingResourcePatternResolver – Cannot search for matching files underneath URL [bundleresource://32/com/company/application/] because it does not correspond to a directory in the file system java.io.FileNotFoundException: URL [bundleresource://32/com/company/application/] cannot be resolved to absolute file path because it does not reside in the […]

导入Eclipse插件的org.eclipse.core包

我正在尝试创建一个模拟Eclipse开放资源对话框(CTRL + SHIFT + R)的插件。 我已经通过以下示例学习了如何创建FilteredItemsSelectionDialog。 但缺少的部分是如何使用工作区资源填充对话框。 我发现OpenResourceHandler并尝试在我的插件中复制此function,因此我可以逐步查看它是如何工作的。 因此,我复制源并重命名它以避免与真实的冲突。 问题是我无法导入这些类: import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; 我尝试编辑我的Manifest,但它不会让我导入org.eclipse.core(虽然我可以导入org.eclipse.core.runtime)。 那么,我在哪里可以找到这些类以及如何导入它们? 而且,更重要的是,一般来说如何找到给定类存在的包并导入它?

Wicket调用冗长的操作并通过ajax进行更新

基于这个SO问题 ,我已经了解到Wicket将后续的AJAX请求排队。 现在我的页面上有几个AJAX请求,我想再添加一个产生冗长操作的页面。 public void populateItem(final Item item) { final MyObject object = (MyObject) item.getModelObject(); // … a couple of fields Label statusLabel = new Label(“status”, new AbstractReadOnlyModel() { @Override public Object getObject() { return someService.doSomeLengthyOperation(); } }); statusLabel.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(5))); item.add(statusLabel) } 一旦这个Ajax请求触发,它可能需要一分钟才能完成执行。 这里的问题是someService.doSomeLengthyOperation()将执行n times the number of rows我拥有n times the number of rows ,这意味着我将排队n […]

如何告诉Eclipse插件本机库驻留在哪个外部插件?

我有一个Eclipse插件,它是C ++库的Java包装器。 我在Linux上运行,因此包装器提供.jar和.so。 我已经从后一个现有的JAR存档创建了一个插件项目。 我已经指向jar的本地库位置中的.so。 我有另一个插件引用这个包装器插件。 我可以从另一个成功运行包装器插件的插件中成功运行一个独立的java应用程序。 使用它的类必须从包装器jar中导入java类,并且在从包装器库实例化任何内容之前,我必须调用System.loadLibrary。 这意味着我已正确设置本机库位置,等等。 当我尝试使用产品定义在OSGi上下文中进行相同类型的操作时,我得到一个java.lang.UnsatisfiedLinkError。 如果我编辑产品定义的运行配置以添加-Djava.library.path= ,我再次能够运行 – 即库正常运行。 如何将此路径添加到插件配置中? 我是否必须从我的Activator类内部的BundleContext创建一个ClassLoader,或者是否有插件配置方式来执行此操作? 我认为我有正确的做法是将.so的路径添加到我的包装器插件的MANIFEST.MF中的运行时类路径但是似乎没有这样做 – 我想这只是针对类路径 – 而不是图书馆的路径。 设想。 有任何想法吗?

如何在OSGi中实现ManagedServiceFactory?

我目前正在尝试设置自己的ManagedServiceFactory实现。 这是我正在尝试做的事情:我需要在每个配置基础上提供多个服务实例。 使用DS,组件工作得很好,但现在我发现这些服务应该处理自己的生命周期(即服务注册表中的(de)注册),具体取决于某些外部资源的可用性,这对DS来说是不可能的。 因此,我的想法是创建一个ManagedServiceFactory ,然后从ConfigurationAdmin接收ConfigurationAdmin并创建我的类的实例。 这些将再次尝试在单独的线程中连接到资源,并在它们准备好运行时将自己注册为服务。 由于我没有运气实现这一点,我试图将所有内容分解为最基本的部分,甚至没有处理动态(de)注册,只是试图让ManagedServiceFacotry工作: package my.project.factory; import java.util.Dictionary; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration; import org.osgi.service.cm.ConfigurationException; import org.osgi.service.cm.ManagedServiceFactory; public class Factory implements BundleActivator, ManagedServiceFactory { private ServiceRegistration myReg; private BundleContext ctx; private Map services; @Override public void start(BundleContext context) throws Exception { System.out.println(“starting factory…”); […]

在普通java中拆分包

OSGi存在拆分包的问题,​​即相同的包但托管在多个包中。 是否有任何边缘情况,拆分包可能会在普通java(没有OSGi)中造成问题? 只是好奇。

bundle中未解决的约束,缺少要求osgi.wiring.package

我正在使用OSGi-(felix),SpringDM,hibernate,maven的项目。 当我安装bundle时,没关系,我运行bundle id时的输出是: LastModified 1384619994484 Headers [Manifest-Version=1.0, Bundle-Vendor=NguyenVinhLinh, Bnd-LastModified=1384619954778, Tool=Bnd-2.1.0.20130426-122213, Bundle-Name=DrugManager, Built-By=nguyenvinhlinh, Import-Package=org.hibernate,org.hibernate.classic,org.hibernate.criterion,org.springframework.beans.factory;version=”[2.5,3)”,org.springframework.core.io;version=”[2.5,3)”,org.springframework.transaction.annotation;version=”[2.5,3)”, Bundle-SymbolicName=DrugManagerDAO, Export-Package=drug,drugGroup,model;version=”1.0.0″, Bundle-Version=1.0.0, Build-Jdk=1.7.0_45, Created-By=Apache Maven Bundle Plugin, Bundle-ManifestVersion=2] BundleContext null Revisions [169.0] BundleId 169 SymbolicName DrugManagerDAO RegisteredServices null ServicesInUse null Version 1.0.0 Location file:/home/nguyenvinhlinh/Projects/felix-framework-4.2.1/bundle/DrugManager-1.0.jar State 2 Bundle 169|Installed | 1|DrugManagerDAO (1.0.0) 这就是我看到的,当我开始这个包时: org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [169]: Unable to […]

使用Web Start / JNLP动态加载其他jar文件

“ Web Start Developers指南”指出 必须从JNLP文件的resources部分中指定的JAR文件中检索所有应用程序资源,或者使用对Web服务器的HTTP请求显式检索所有应用程序资源。 建议在JAR文件中存储资源,因为它们将由Java Web Start缓存在本地计算机上。 现在,我有一些资源,我想在我的应用程序启动后动态加载(例如OSGi包)。 我可以使用普通的HTTP做到这一点,但我想利用Web Start对本地缓存和版本化/体系结构特定资源的支持。 有没有办法使用Web Start基础架构从原始代码库(在应用程序的jnlp文件中指定)下载其他jar文件? 或者:是否已经建立了集成OSGi和Web Start的方法,这将减轻我从Web Start服务器安装捆绑包的任务?

Eclipse RCP插件中的多个slf4j绑定

我有一个简单的Eclipse插件,它让我在激活时出现以下错误: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [bundleresource://103.fwk8918249:1/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [bundleresource://103.fwk8918249:4/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 两个URL都解析为捆绑中完全相同的jar libs/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class 我该如何解决这个问题? 怎么捆绑jar加载jar子两次(“:1”和“:4”)?