- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 EclipseLink 制作一个 RCP 应用程序,并将其部署到 OSGi 包中。当我们在eclipse中运行该应用程序时,它运行得很好,在linux上部署后它运行良好,但是当我们在windows下部署它时,它崩溃了。
以下代码出现异常:
Map<String, Object> connectionProperties = new HashMap<String, Object>();
connectionProperties.put(PersistenceUnitProperties.CLASSLOADER,
this.getClass().getClassLoader());
PersistenceProvider pp = new PersistenceProvider();
entityManagerFactory = pp.createEntityManagerFactory(
"persistence_unit", connectionProperties);
PersistenceProvider来自org.eclipse.persistence.jpa.osgi包,connectionProperties
运行此代码后,我们得到一个由 java.net.MalformedURLException
引起的 org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
。经过大量调试后,我可以看出 OSGi 肯定找到了这个 persistence.xml (早些时候我们将 persistence.xml 位于错误的目录中,并且我们有不同的异常,说没有可用的包来定义该持久单元),它可以轻松检索它(通过手动加载和读取来测试)。在我看来,PersistenceUnitProcessor无法在findPersistenceArchives方法中加载正确的存档(看起来它在找到META-INF/persistence.xml文件后返回一个存档,但这个存档是空的)。
我在链接 http://www.eclipse.org/forums/index.php/mv/msg/218408/693584/#msg_693584 下发现了类似的内容。虽然不完全一样,但是涵盖了eclipse和eclipseLink,但是在我们的项目中并不适用。
我相信更深入地调试库是没有意义的,错误一定是在产品导出配置中或我们代码中的某些错误。
两个系统(windows XP 和 ubuntu 11.04)都使用相同的 eclipse 3.7,添加了相同的软件包,都有 java 1.6u26、EclipseLink 2.3.0
有什么想法吗?
编辑:
只是为了确保我们的项目中不会出现其他问题(因为它现在相当大),我按照以下步骤创建了干净的新项目:
在 src 包中创建了 META-INF/persistence.xml 文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
<class>DummyEntity</class>
<properties>
<property name="javax.persistence.jdbc.url"
value= database-url />
<property name="javax.persistence.jdbc.user" value= database-user />
<property name="javax.persistence.jdbc.password" value= database-password />
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
</properties>
</persistence-unit>
</persistence>
创建了 DummyEntity 类。
添加到manifest.mf文件:
Import-Package: javax.persistence;jpa="2.0";version="2.0.3",
org.eclipse.persistence.config;version="2.3.0.v20110604-r9504",
org.eclipse.persistence.jpa;version="2.3.0.v20110604-r9504",
org.eclipse.persistence.jpa.osgi;version="2.3.0.v20110604-r9504"
JPA-PersistenceUnits: pu
在产品配置中添加了所需的依赖项,使 DummyEntity 成为 JPA 实体
向 Activator.start 添加了代码:
import javax.persistence.EntityManagerFactory;
import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.eclipse.persistence.jpa.osgi.PersistenceProvider;
...
Map<String, Object> connectionProperties = new HashMap<String, Object>();
connectionProperties.put(PersistenceUnitProperties.CLASSLOADER, this
.getClass().getClassLoader());
try {
EntityManagerFactory emf = new PersistenceProvider()
.createEntityManagerFactory("pu", connectionProperties);
log("Connection established");
} catch (Exception e) {
// here some code to log the exception stack trace
}
导出到漂亮的可执行包中。
虽然在 eclipse 下运行顺利,但运行部署的包返回以下内容:
EXCEPTION
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException :
Exception Description: An exception was thrown while trying to load persistence unit at url: bundleresource://34.fwk2279771
Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://34.fwk2279771
Internal Exception: java.net.MalformedURLException
TRACE:
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionLoadingFromUrl(PersistenceUnitLoadingException.java:99)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:538)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:444)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:282)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:265)
org.eclipse.persistence.jpa.osgi.PersistenceProvider.getInitializer(PersistenceProvider.java:91)
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:71)
rcptest.Activator.start(Activator.java:66)
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(Unknown Source)
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
org.eclipse.equinox.launcher.Main.run(Main.java:1410)
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException :
Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://34.fwk2279771
Internal Exception: java.net.MalformedURLException
TRACE:
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:117)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:579)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:536)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:444)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:282)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:265)
org.eclipse.persistence.jpa.osgi.PersistenceProvider.getInitializer(PersistenceProvider.java:91)
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:71)
rcptest.Activator.start(Activator.java:66)
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(Unknown Source)
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
org.eclipse.equinox.launcher.Main.run(Main.java:1410)
java.net.MalformedURLException : null
TRACE:
java.net.URL.<init>(Unknown Source)
java.net.URL.<init>(Unknown Source)
java.net.URL.<init>(Unknown Source)
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:577)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:536)
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:444)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:282)
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:265)
org.eclipse.persistence.jpa.osgi.PersistenceProvider.getInitializer(PersistenceProvider.java:91)
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:71)
rcptest.Activator.start(Activator.java:66)
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(Unknown Source)
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
org.eclipse.equinox.launcher.Main.run(Main.java:1410)
最佳答案
我们也遇到了这个问题。
简而言之,我们的解决方案是子类化 ArchiveFactoryImpl(属于 jpa),重写 isJarInputStream 方法,使其始终返回 false(如果您想执行更复杂的检查,请更改..)
然后通过系统属性注册这个子类:
System.setProperty(SystemProperties.ARCHIVE_FACTORY, OurArchiveFactoryImpl.class.getName());
从 eclipse 3.7 开始,正常的 ArchiveFactoryImpl#isJarInputStream 的 react 似乎有所不同(任何人都可以确认这一点吗??)。在该方法中,执行了一个小技巧来“检查”给定的 url 是否实际上是 JarInputStream。似乎 eclipse 3.7 的解析 url 的方式略有不同,这会导致 isJarInputStream 返回 true。
关于osgi - 为什么我无法从 OSGi/RCP/EclipseLink 应用程序加载 persistence.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010020/
我在 trying to share the Struts packages 时遇到了这个问题在 OSGi 容器内的多个包之间。我想避免在包内重复依赖项并在它们之间引入新的依赖项(通过让一个包导出其内
我正在考虑在我们的项目中管理版本控制的最佳方式。目前,我们 bundle 中的每个包都是导出的(这将在以后改进,所以不要因为这个失礼而挂断电话)。我们正在使用 maven-bundle-plugin,
我正在进行一个项目,我们将迁移基于大量定制技术的主要软件系统,使其基于 OSGi 服务。为此,我们可能需要某种与 OSGi 服务配合良好的消息总线。 同步和异步传送 仅点对点 保证交付 - 最好通过文
我的项目有一组自定义定义的注释,它们可以出现在 OSGi 4.3 框架中部署的任何包中。我想在类路径中找到任何带有这些注释的类。我尝试使用 BundleWiring.listResources(...
我创建了一个片段包来访问一些添加到第二方 jar 的功能。我的片段应该注册一个服务来公开这个新功能。它似乎不起作用。在我深入进行故障排除之前,我想知道这是否被允许?也就是说,Felix SCR 的 b
OSGi 是 Java 的动态模块化系统。好的,但是基线主题是什么,为什么要开发 OSGi?使用 OSGi 有什么好处?开发 OSGi 的主要故事是什么?它为什么存在? 最佳答案 如果你仔细观察,Ja
当一个包被更新(比如修复一个错误)时,当前正在使用正在更新的包的其他包会发生什么? 假设有两个捆绑包 service 和 dao。假设当我发出更新 dao 层的命令时,服务包中的类正在使用 dao 包
在 OSGi 下,组件与服务之间的主要区别是什么?据我了解,所有服务都必须是组件,但并非所有组件都必须是服务。 在示例用例中使用其中一种比另一种有什么好处? 最佳答案 “组件”的定义不如服务正式。 服
这合法吗?org.fragment1 的 MANIFEST.MF(org.host 是普通包,不是片段): Bundle-SymbolicName: org.fragment1 Fragment-Ho
在我当前的应用程序中,我在几个地方遇到了这种模式:我在一个 bundle 中有两个服务接口(interface),它们执行不同但相关的工作。 interface Service1 { ... } in
我的 OSGi 应用程序需要一个 jar(sample;version=A),并且我必须将相同的 jar(sample;version=B) 用于我开发的新包。 示例 jar 有一些增强功能,因此我不
osgi> install file:D:\f1\*.jar osgi> install --start file:D:\f1\*.jar 以上命令在 WSO2 OSGi 控制台中是非法的。如何从文件
和有什么不一样和 在spring DM的xml配置文件中。 最佳答案 可用于获取 对现有 OSGi 服务的引用,以便您的 bean 可以使用它。 可用于导出将 bean 作为 OSGi 服务,以
我有一个应用程序暂时使用 Equinox 作为 osgi 框架。直到现在我都使用系统属性 osgi.install.area 来指定我的包在哪里 ${osgi.install.area}/ plu
背景 在过去一年左右的时间里,我设计了许多工具,旨在帮助我为 XPage 编程。这些工具主要包括帮助程序 java 类、扩展日志记录(使用 OpenLogger 和我自己的东西),以及我个人觉得我不能
我有一个 OSGi 组件 MyComponent . 该组件引用了服务 MyService .现在MyService有几个实现 MyServiceImpl1和 MyServiceImpl2 . MyC
我有几个 OSGi 包,每个都可以从 OSGi 包存储库更新。 当我启动我的 OSGi 框架 (Apache Felix) 时,我希望第一个包启动并检查所有已安装包的更新。如果有可用更新,它应该更新每
当我们在 Apache Felix Web OSGi 控制台的配置选项卡中更新组件的任何配置时,这些配置设置保存在哪里?这是针对 AEM 6.0 或更高版本。 最佳答案 手动保存的配置设置存储在 cr
我有简单的 OSGI 事件监听器类 @Component(immediate = true) @Service(value = { EventHandler.class, JobConsumer.cl
我们正在开发一个网络应用程序(我们称之为图像库),我们已经确定了以下需求: 该应用程序迎合由一组用户组成的客户。 可以动态创建新客户并由客户管理其用户 客户有不同的功能集,可以动态更改 客户可以开发自
我是一名优秀的程序员,十分优秀!