Thanks for the explanation on OSGi. I figured out why opennms-webapp-jetty was including older versions of some dependencies in /opt/opennms/jetty-webapps/opennms-remoting/webstart/. It starts with features/remote-poller having a dependency on dependencies/spring-web. spring-web depends on hibernate (commons-collections) and other apache commons libraries (digester, logging), and its these dependencies that don't get overridden when the jnlp assembly is built, so the versions defined in their poms are included.
I used "../../compile.pl -X -v" in features/remote-poller-jnlp/ to see that it was included the old versions when building the jnlp assembly. Then I used "compile.pl dependency:tree -Dverbose=true" inside features/remote-poller/ to see where the old versions were getting pulled in from. Not sure whether the dependency should be added in dependencies/spring-web/pom.xml or in features/remote-poller/pom.xml. diff --git a/dependencies/spring-web/pom.xml b/dependencies/spring-web/pom.xml index 6dcf832..31b8ad9 100644 --- a/dependencies/spring-web/pom.xml +++ b/dependencies/spring-web/pom.xml @@ -171,6 +171,18 @@ <artifactId>commons-beanutils</artifactId> </dependency> <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + <dependency> + <groupId>commons-digester</groupId> + <artifactId>commons-digester</artifactId> + </dependency> + <dependency> + <groupId>commons-pool</groupId> + <artifactId>commons-pool</artifactId> + </dependency> + <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> </dependency> On 5/21/2013 10:03 AM, Seth Leger wrote: > 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 sqervices > (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/... >>>> > > ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite It's a free troubleshooting tool designed for production Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://p.sf.net/sfu/appdyn_d2d_ap2 _______________________________________________ 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