violen violan violaciònes viola quienes que porque pasa mundo los humanos ejemplos educacion derechos derecho como casos osgi jboss7.x apache-felix

osgi - violaciònes - ¿Por qué se violan las restricciones de uso cuando ambas cadenas terminan en el mismo paquete?



que pasa si se violan los derechos humanos (1)

No tiene que importar foo.fragment en la aplicación, su dependencia se resolverá desde foo. así que simplemente elimine esa dependencia y vuelva a implementar eso. Este problema se debe a la dependencia cíclica.

Tengo cuatro paquetes, cada uno contiene solo un manifiesto. Los paquetes son

  • app que importa com.example.foo.fragment y com.example.bar
  • foo que exporta com.example.foo;uses:=com.example.foo.cfg
  • foo.fragment que es un fragmento adjunto a foo que exporta com.example.foo.fragment y com.example.foo.fragment.cfg;uses:=com.example.foo.fragment
  • bar que exporta com.example.bar e importa com.example.foo

Gráfico de dependencia de nivel de paquete :

app -> bar | | | v | foo | | v v foo.fragment

Cuando instalo estos paquetes a la vez en JBoss AS 7.2, funcionan muy bien. Pero si instalo el paquete de app después de los demás, ya sea por primera vez o después de iniciarlo con éxito y luego desinstalarlo, se produce la siguiente violación de restricciones de uso:

Caused by: org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource com.example.app [HostBundleRevision[com.example.app:0.0. 0]] because it is exposed to package ''com.example.foo.fragment'' from resources com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] and com.example.foo [HostBund leRevision[com.example.foo:0.0.0]] via two dependency chains. Chain 1: com.example.app [HostBundleRevision[com.example.app:0.0.0]] import: null | export: osgi.wiring.package=com.example.foo.fragment com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] Chain 2: com.example.app [HostBundleRevision[com.example.app:0.0.0]] import: null | export: osgi.wiring.package=com.example.bar; uses:=com.example.foo com.example.bar [HostBundleRevision[com.example.bar:0.0.0]] import: null | export: osgi.wiring.package=com.example.foo; uses:=com.example.foo.fragment export: osgi.wiring.package=com.example.foo.fragment com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1142) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:197) at org.jboss.osgi.resolver.felix.StatelessResolver.resolve(StatelessResolver.java:56) at org.jboss.osgi.framework.internal.ResolverImpl.resolveAndApply(ResolverImpl.java:137) at org.jboss.as.osgi.service.BundleLifecycleIntegration$BundleLifecycleImpl.activateDeferredPhase(BundleLifecycleIntegration.java:296) ... 31 more

Los manifiestos completos son:

app.jar/META-INF/MANIFEST.MF ---------------------------- Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.example.app Import-Package: com.example.foo.fragment,com.example.bar ---------------------------- foo.jar/META-INF/MANIFEST.MF ---------------------------- Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.example.foo Export-Package: com.example.foo;uses:="com.example.foo.cfg" ------------------------------------- foo.fragment.jar/META-INF/MANIFEST.MF ------------------------------------- Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.example.foo.fragment Fragment-Host: com.example.foo Export-Package: com.example.foo.fragment,com.example.foo.cfg;uses:="co m.example.foo.fragment" ---------------------------- bar.jar/META-INF/MANIFEST.MF ---------------------------- Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.example.bar Export-Package: com.example.bar;uses:="com.example.foo" Import-Package: com.example.foo

No he podido reproducir el error anterior en Apache Felix 4.2.1.

¿Cuál es la causa de este comportamiento? Si Fragment-Host: com.example.foo fila Fragment-Host: com.example.foo del manifiesto foo.fragment , puedo reinstalar la app sin errores. ¿Es esto un error en JBoss AS 7.2?