【问题标题】:Deploying OSGi bundle on Oracle 12c throws NPE在 Oracle 12c 上部署 OSGi 包会引发 NPE
【发布时间】:2016-08-12 10:47:07
【问题描述】:

在 Weblogic 12.2.1 上,我正在尝试使用管理控制台将简单的 OSGi Bundle 部署为 war 文件,但会抛出带有以下日志的 NPE。

Caused by: java.lang.NullPointerException:

        at org.apache.felix.framework.cache.JarRevision.getMainAttributes(JarRevision.java:210)

        at org.apache.felix.framework.cache.JarRevision.getManifestHeader(JarRevision.java:104)

        at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1235)

        at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:112)

        at org.apache.felix.framework.Felix.installBundle(Felix.java:2905)

        at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)

作为先决条件,我创建了基于 Apache Felix 的 OSGi 框架(服务->OSGi 框架)。我的 Bundle 是一个 API 项目,它包含几个接口,我将其包装在 WAR 文件中。 war文件结构如下:

myapi-project.war
   - META-INF
   - WEB-INF
          - classes
          - lib
          - osgi-lib
               - api-project.jar
          - weblogic.xml

Weblogic.xml 内容为:

   <wls:osgi-framework-reference>
   <wls:name>CPS-OSGi</wls:name>
   <wls:application-bundle-version>1.0</wls:application-bundle-version>
   <wls:application-bundle-symbolic-name>cpsservices.approval</wls:application-    bundle-symbolic-name>
   <wls:bundles-directory>osgi-lib</wls:bundles-directory>

API 项目 MENIFEST.MF 内容:

  Manifest-Version: 1.0
  Implementation-Vendor: BAML
  Implementation-Title: CPS API 
  Implementation-Version: 1.0.0
  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: cpsservices.api
  Bundle-Name: cpsservices api bundle 
  Bundle-Vendor: BAML
  Bundle-Version: 1.0.0
  Export-Package: com.bofa.cp.core, com.bofa.cp.services
  Bundle-Activator: com.bofa.cp.core.Activator

我已尝试添加其他 MENIFEST 属性,但这并没有解决问题。在过去的两天里,我一直坚持这一点。任何帮助表示赞赏。 谢谢。

更新:这是应用服务器 Oracle 12.2.1 附带的 org.apache.felix.org.apache.felix.main.jar v4.4 中 JarRevision 类的屏幕截图 -

Felix 由于某种原因无法读取 MENIFEST.MF 文件的可能原因。为了确认这种理解,我更改了文件中的 Bundle Symbolic 名称,但这并没有改变异常。 猜猜我很接近......

【问题讨论】:

    标签: osgi weblogic12c apache-felix


    【解决方案1】:

    解决了这个问题。猜猜看 - MANIFEST.MF 文件名中的错字(创建的文件名为 mEnifest.mf)。我需要休息一下:)

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2015-02-15
      • 2013-03-09
      • 2013-12-27
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2021-08-25
      相关资源
      最近更新 更多