VMware Cloud Community
claire_russell
Contributor
Contributor

Local Plugin on vSphere 8 - 3rd party library jars not recognized during isolation process

Hello!

I am currently working on migrating a local plugin to work with the vSphere Client SDK version 8 (I am aware that the local plugins are deprecated and will be removed in a future release). I am going through the local plugin library isolation steps outlined by VMWare. I am encountering issues with steps 7 - 16: resolving the plugin bundles that are in the INSTALLED state.

When I first telnet to the OSGi console and check the bundles (before changing anything), I get this output:

344     INSTALLED   org.eclipse.virgo.web.dm_1.0.0

345     INSTALLED   com.hpe.vnsui.vns-ui_1.4.10

346     INSTALLED   com.vmware.o11n_1.0.0

347     INSTALLED   com.hpe.vnsui.vns-service_1.4.10

When I run the "diag"  and "packages" commands to see what's missing. I get the following import packages:

  • org.springframework.aop (bundle-symbolic-name="org.springframework.aop"; bundle-version:Version="5.3.22"),
  • org.apache.commons.io (bundle-symbolic-name="org.apache.commons.commons-io"; bundle-version:Version="2.11.0"),
  • com.google.gson (bundle-symbolic-name="com.google.gson"; bundle-version:Version="2.9.0")

After this, I create the "libraries" folder as directed, and add in the following jar files:

  • gson-2.9.0.jar
  • commons-io-2.11.0.jar
  • spring-aop-5.3.22.jar

When I restart everything and run the ss command in the OSGi telnet console again I still get some unresolved packages.

After another round of running "diag" and "packages" to find what's missing I get:

  • org.apache.commons.lang (bundle-symbolic-name="com.springsource.org.apache.commons.lang"; bundle-version:Version="2.6.0")
  • org.apache.http (bundle-symbolic-name="org.apache.httpcomponents.httpcore"; bundle-version:Version="4.4.15")
  • org.springframework.aop (bundle-symbolic-name="org.springframework.aop"; bundle-version:Version="5.3.22")

And add the following jar files to /libraries: commons-lang-2.6.jar, httpcore-4.4.15.jar, spring-aop-5.3.22.jar

At this point, when I run "service-control --restart" in the VCSA, and then go to the OSGi telnet client, none of the installed or resolved packages show up. So to troubleshoot what was going on, I ran the localhost catalina server on my machine with our local plugin and looked at the vsphere_client_virgo.log to see what errors were popping up. I saw this message:

[2023-08-16T00:29:44.372Z] [ERROR] SimpleAsyncTaskExecutor-1     com.vmware.vise.extensionfw.ExtensionManager                      Error retrieving deployment data for the plugin package at C:\sdk\html-client-sdk\vsphere-ui\plugin-packages\vnsui java.io.IOException: The bundle at C:\sdk\html-client-sdk\vsphere-ui\plugin-packages\vnsui\libraries\httpcore-4.4.15.jar should have Bundle-SymbolicName and Bundle-Version headers in its MANIFEST.MF

If I remove httpcore-4.4.15.jar and keep only the spring-aop jar file I get a similar error.

This is an error that my team has dealt with before (with an older version of vSphere). Last time this happened we were instructed by VMWare support to either:

  • Option 1: Convert the offending jar to an OSGi bundle
    • Run the Bundlor tool to modify the MANIFEST.MF of the jar file to contain Bundle information (convert it to an OSGi bundle)
    • Edit the vns-service.jar’s MANIFEST.MF to
      • remove the jar from the Bundle-ClassPath section
      • add all needed Java packages to the Import-Package section
  • Option 2: Include the jar in the vns-service.jar classpath
    • Delete the jar from the plugins/ folder and add it at root level inside the vns-service.jar. (NOTE: this solution was for an older version of vSphere so the libraries/ folder was not yet a factor)

I tried option 2 first. I added  httpcore-4.4.15.jar and spring-aop-5.3.22.jar to the vns-service.jar classpath, deleted them from the /libraries folder, and then added them to the root level of vns-service.jar. After restarting everything again, the INSTALLED and RESOLVED packages reappeared, but it is still saying that  org.apache.http and org.springframework.aop are unresolved requirements.

For reference, this is the OSGi ss output:

333     RESOLVED    com.google.gson_2.9.0

334     INSTALLED   com.hpe.vnsui.vns-service_1.4.10

335     INSTALLED   com.vmware.o11n_1.0.0

336     INSTALLED   com.hpe.vnsui.vns-ui_1.4.10

337     INSTALLED   org.eclipse.virgo.web.dm_1.0.0

338     RESOLVED    org.apache.commons.lang_2.6.0

339     RESOLVED    org.apache.commons.commons-io_2.11.0

340     RESOLVED    com.vmware.wsvim25_8.0.0

I tried option 1 next. I modified the MANIFEST.MF files of the httpcore and spring-aop jar files and vns-service.jar’s MANIFEST.MF.  After re-running everything the OSGi ss output says:

330     INSTALLED   com.hpe.vnsui.vns-service_1.4.10

331     INSTALLED   com.vmware.o11n_1.0.0

332     RESOLVED    org.springframework.aop_5.3.22

333     RESOLVED    org.apache.commons.lang_2.6.0

334     RESOLVED    com.google.gson_2.9.0

335     INSTALLED   org.eclipse.virgo.web.dm_1.0.0

336     RESOLVED    org.apache.commons.commons-io_2.11.0

337     INSTALLED   com.hpe.vnsui.vns-ui_1.4.10

338     RESOLVED    com.vmware.wsvim25_8.0.0

339     RESOLVED    org.apache.httpcomponents.httpcore_4.4.15

If I run the localhost server and look at vsphere_client_virgo.log I get the same error for both option 1 and option 2:

[ERROR] plugin-deploy9 com.vmware.vise.extensionfw.impl.PackagesDeployer Error deploying one of more bundles for the plugin package C:\sdk\html-client-sdk\vsphere-ui\plugin-packages\vnsui org.osgi.service.subsystem.SubsystemException: Framework could not resolve the bundles: [org.osgi.service.subsystem.region.context.3_1.0.0 [335], org.apache.httpcomponents.httpcore_4.4.15 [338], org.apache.commons.commons-io_2.11.0 [336], org.springframework.aop_5.3.22 [339], com.vmware.o11n_1.0.0 [345], com.vmware.wsvim25_8.0.0 [343], org.apache.commons.lang_2.6.0 [340], org.eclipse.virgo.web.dm_1.0.0 [341], com.hpe.vnsui.vns-service_1.4.10 [342], com.hpe.vnsui.vns-ui_1.4.10 [344], com.google.gson_2.9.0 [337]]

At this point I have tried everything I could think of to get this to work and am at a total loss for what to try next. Do you have any insight into what could be going on?

Thank you for your help!

Labels (3)
Reply
0 Kudos
0 Replies