Hi Ron,

OK, what you are seeing here is the set of JARs that comes bundled with
a vanilla Karaf install (jetty, spring 3.0 and 3.1, joda-time, etc). We
don't really control this set of JARs... the Karaf guys do. Karaf is
basically a large set of OSGi bundles (JARs with metadata) that are
integration-tested together to provide the basic OSGi services
(container, osgi-http, custom karaf ssh shell commands). It's entirely
possible going forward that we'll have "conflicting" JARs in this sense
because our OSGi "features" (Karaf's name for collections of OSGi
bundles that perform a particular task) will specify the specific
version of their dependencies while the "features" included with Karaf
will have their own particular versions of libraries that they depend on.

As an example, if Karaf's SSH shell uses the maven artifact
mvn:org.apache.sshd/sshd-core/0.8.0 and we write some sort of SSH shell
into OpenNMS that uses mvn:org.apache.sshd/sshd-core/0.9.0, then both
versions of the JAR will be in /opt/opennms/system and will happily run
alongside each other in the OSGi container, each as part of a separate
"feature".

I know this email seems pedantic and you're probably personally already
aware of how OSGi works but I tried to explain things so that developers
who are less familiar can see what is happening here.

It is a bit messy-looking to have multiple versions of these JARs laying
around but the logging inside the Karaf OSGi container appends the
bundle name to the end of any stack traces so it's easy to see which
JARs are running code when an exception occurs. It's usually easy to
track down issues, maybe even easier than a regular JVM where you're not
exactly sure which JAR is running which code (unless you are inside a
debugger like Eclipse that can understand all of the maven dependencies).

Seth Leger
The OpenNMS Group


On 5/21/13 12:38 AM, Ron Roskens wrote:
> Here is what I see for master:
>
>            commons-collections                     3.1
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>            commons-collections                   3.2.1
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>            commons-collections                   3.2.1
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/commons-collections/commons-collections/3.2.1/
>               commons-digester                     1.6
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>               commons-digester                     2.1
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     commons-io                   1.3.2
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/commons-io/commons-io/1.3.2/
>                     commons-io                   2.0.1
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     commons-io                   2.0.1
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                   commons-pool                   1.5.4
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                   commons-pool                   1.5.6
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/commons-pool/commons-pool/1.5.6/
>                   commons-pool                     1.6
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>             jetty-continuation        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>             jetty-continuation         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-continuation/7.6.8.v20121106/
>                     jetty-http        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     jetty-http         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-http/7.6.8.v20121106/
>                       jetty-io        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                       jetty-io         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-io/7.6.8.v20121106/
>                 jetty-security        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                 jetty-security         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-security/7.6.8.v20121106/
>                   jetty-server        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                   jetty-server         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-server/7.6.8.v20121106/
>                  jetty-servlet        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                  jetty-servlet         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-servlet/7.6.8.v20121106/
>                     jetty-util        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     jetty-util         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-util/7.6.8.v20121106/
>                   jetty-webapp        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                   jetty-webapp         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-webapp/7.6.8.v20121106/
>                      jetty-xml        7.6.10.v20130312
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                      jetty-xml         7.6.8.v20121106
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/eclipse/jetty/jetty-xml/7.6.8.v20121106/
>                      joda-time                   1.6.2
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/joda-time/joda-time/1.6.2/
>                      joda-time                     2.1
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                         quartz                   1.6.5
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                         quartz                   1.6.5
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                         quartz                   2.1.5
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/quartz-scheduler/quartz/2.1.5/
>                      slf4j-api                   1.6.6
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/slf4j/slf4j-api/1.6.6/
>                      slf4j-api                   1.7.2
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                      slf4j-api                   1.7.2
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                     spring-aop           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     spring-aop           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                     spring-aop           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-aop/3.1.4.RELEASE/
>                     spring-asm           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     spring-asm           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                     spring-asm           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-asm/3.1.4.RELEASE/
>                   spring-beans           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                   spring-beans           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                   spring-beans           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-beans/3.1.4.RELEASE/
>                 spring-context           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                 spring-context           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                 spring-context           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-context/3.1.4.RELEASE/
>         spring-context-support           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>         spring-context-support           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>         spring-context-support           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-context-support/3.1.4.RELEASE/
>                    spring-core           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                    spring-core           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                    spring-core           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-core/3.1.4.RELEASE/
>              spring-expression           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>              spring-expression           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>              spring-expression           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-expression/3.1.4.RELEASE/
>                     spring-jms           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     spring-jms           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                     spring-jms           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-jms/3.1.4.RELEASE/
>                      spring-tx           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                      spring-tx           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                      spring-tx           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-tx/3.1.4.RELEASE/
>                     spring-web           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                     spring-web           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                     spring-web           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-web/3.1.4.RELEASE/
>                  spring-webmvc           3.0.7.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/lib/
>                  spring-webmvc           3.0.7.RELEASE
> opennms-webapp-jetty-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/jetty-webapps/opennms-remoting/webstart/
>                  spring-webmvc           3.1.4.RELEASE
> opennms-core-1.13.0-0.20130520.3.noarch.rpm:/opt/opennms/system/org/springframework/spring-webmvc/3.1.4.RELEASE/
>
> For my custom branch with updates, they were pretty much the same as
> above. At compile time, everything seems to be using the same
> versions, then at assembly time, newer versions get pulled in. I don't
> quite get how come something like commons-pool goes from 1.6 in
> /opt/opennms/lib/, to 1.5.6 under system/..., and then its 1.5.4 under
> jetty-webapps/opennms-remoting/... Its defined as 1.6 in
> $OPENNMS_SRC/pom.xml.
>
> For the jetty ones, I find the two release version strings in pom.xml
> and container/karaf/src/main/filtered-resources/features/features.xml.
> But on my custom branch, when I was tried having both use
> 8.1.10.v20130312, it still pulled in the 7.6.8.v20121106 version, and
> a "git grep 7.6.8.v20121106" doesn't reveal it listed in any file.
>
> On 5/20/2013 8:38 AM, Seth Leger wrote:
>> Hi Ron,
>>
>> The differences between the lib and system directories isn't necessarily
>> a problem. The new system directory is a maven repository that is used
>> to provide OSGi JARs to our new Apache Karaf container. Basically, Karaf
>> can load OSGi modules from a mvn:groupId/artifactId/version URL and we
>> point it at this directory to load all of the new OpenNMS code that has
>> been OSGi-fied (which is basically the new topology maps, node maps, MIB
>> compiler admin UI, and NRTG graphing). The contents of the system
>> directory are populated by using Maven dependencies.
>>
>> Since different versions of the same JAR can run side-by-side in OSGi,
>> it's not necessarily a problem to have multiple versions of the same JAR
>> in there. However, we may run into class loading or OSGi service
>> registry problems if two JARs try to register the same service and are
>> in some way incompatible with the service consumer.
>>
>> What libraries are you seeing conflicts with in the system directory?
>>
>> Seth Leger
>> The OpenNMS Group
>>
>>
>> On 5/20/13 12:56 AM, Ron Roskens wrote:
>>> 1. There are different versions of the same library in
>>> /opt/opennms/lib/  and /opt/opennms/system/...
>>>
>>
>




------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/index.php/Mailing_List_FAQ

opennms-devel mailing list

To *unsubscribe* or change your subscription options, see the bottom of this 
page:
https://lists.sourceforge.net/lists/listinfo/opennms-devel

Reply via email to