Standalone Spring (jar) application conflicting with other weblogic 10 web applications

I have a standalone spring application that mainly contains aspecj aspects and several other spring managed beans and is bundled with a maven-assembly plugin with all the spring dependencies that are part of the bank and added to the path to the weblog class.

The goal is to have aspects inside the library woven into all running applications inside weblogic at runtime using the aspectJ agent.

The problem is that when I add my jar file to the classpath and restart the server, I get a ClassNotFoundException when deploying an existing web application.

I know that this is not a jar file that is not in the lib folder, since the application deploys fine without my jar file in the classpath.

Note. I also get a classNotFoundException when I just throw the spring jar files into the / lib domain folder.

Can you highlight why my spring library affects application performance?

See the stacktrace table below: I am sure that javax.validation.ValidatorFactory is in validation-api inside the WEB-INF \ lib folder. since I get this exception only when I add my custom jar file to the weblogic class path.

Caused By: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] for bean with name 'jsr303Validator' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1272) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:578) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1338) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:356) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:335) at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:187) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:895) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768) at org.s Caused By: java.lang.ClassNotFoundException: javax.validation.ValidatorFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java 

Here is the dependency tree of my WAR file.

  [INFO] [dependency:tree {execution: default-cli}] [INFO] com.company.project:eCom4jWeb:war:1.0.0-SNAPSHOT [INFO] +- com.company.project:eCom4jCore:jar:1.0.0-SNAPSHOT:compile [INFO] | +- org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile [INFO] | +- org.hsqldb:com.springsource.org.hsqldb:jar:1.8.0.9:runtime [INFO] | +- mysql:mysql-connector-java:jar:5.1.9:compile [INFO] | +- org.hibernate:com.springsource.org.hibernate:jar:3.3.2.GA:compile [INFO] | | +- net.sourceforge.cglib:com.springsource.net.sf.cglib:jar:2.2.0:compile [INFO] | | +- org.antlr:com.springsource.antlr:jar:2.7.6:compile [INFO] | | +- org.apache.commons:com.springsource.org.apache.commons.collections:jar:3.2.1:compile [INFO] | | +- org.dom4j:com.springsource.org.dom4j:jar:1.6.1:compile [INFO] | | +- org.jboss.javassist:com.springsource.javassist:jar:3.9.0.GA:compile [INFO] | | \- org.objectweb.asm:com.springsource.org.objectweb.asm:jar:1.5.3:compile [INFO] | +- org.hibernate:com.springsource.org.hibernate.annotations:jar:3.4.0.GA:compile [INFO] | | \- org.hibernate:com.springsource.org.hibernate.annotations.common:jar:3.3.0.ga:compile [INFO] | +- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile [INFO] | | +- javax.validation:validation-api:jar:1.0.0.GA:compile [INFO] | | \- org.slf4j:slf4j-api:jar:1.6.1:compile [INFO] | +- javax.transaction:com.springsource.javax.transaction:jar:1.1.0:compile [INFO] | +- commons-beanutils:commons-beanutils:jar:1.8.3:compile [INFO] | +- net.sf.dozer:dozer:jar:5.3.1:compile [INFO] | \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:runtime [INFO] | \- stax:stax-api:jar:1.0.1:runtime [INFO] +- com.company.project:eCom4jWS:jar:1.0.0-SNAPSHOT:compile [INFO] | +- com.company.project:eCom4jRemixDomain:jar:1.0.0-SNAPSHOT:compile [INFO] | | \- org.jvnet.jaxb2_commons:jaxb2-basics-runtime:jar:0.6.2:compile [INFO] | \- org.springframework:spring-oxm:jar:3.1.2.RELEASE:compile [INFO] +- javax.servlet:jstl:jar:1.2:compile [INFO] +- org.springframework.security:spring-security-web:jar:3.1.2.RELEASE:compile [INFO] | \- aopalliance:aopalliance:jar:1.0:compile [INFO] +- org.springframework.security:spring-security-taglibs:jar:3.1.2.RELEASE:compile [INFO] | \- org.springframework.security:spring-security-acl:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-webmvc:jar:3.1.2.RELEASE:compile [INFO] | +- org.springframework:spring-asm:jar:3.1.2.RELEASE:compile [INFO] | \- org.springframework:spring-context-support:jar:3.1.2.RELEASE:compile [INFO] +- javax.servlet:servlet-api:jar:2.5:provided [INFO] +- org.springframework:spring-beans:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework.webflow:spring-binding:jar:2.2.1.RELEASE:compile [INFO] +- org.springframework.webflow:spring-js:jar:2.2.1.RELEASE:compile [INFO] | \- org.springframework.webflow:spring-js-resources:jar:2.2.1.RELEASE:compile [INFO] +- org.springframework.webflow:spring-webflow:jar:2.2.1.RELEASE:compile [INFO] +- org.springframework.security:spring-security-config:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework.security:spring-security-core:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-tx:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-web:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-aop:jar:3.1.2.RELEASE:compile [INFO] +- commons-logging:commons-logging:jar:1.1.1:compile [INFO] +- org.springframework:spring-core:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-orm:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-context:jar:3.1.2.RELEASE:compile [INFO] +- javax.el:el-api:jar:1.0:provided [INFO] +- org.jboss.el:com.springsource.org.jboss.el:jar:2.0.0.GA:compile [INFO] +- org.apache.tiles:tiles-core:jar:2.1.4:compile [INFO] | +- commons-digester:commons-digester:jar:1.8.1:compile [INFO] | \- commons-logging:commons-logging-api:jar:1.1:compile [INFO] +- org.apache.tiles:tiles-jsp:jar:2.1.4:compile [INFO] +- org.apache.tiles:tiles-api:jar:2.1.4:compile [INFO] +- org.apache.tiles:tiles-servlet:jar:2.1.4:compile [INFO] +- org.springframework:spring-test:jar:3.1.2.RELEASE:test [INFO] +- org.springframework:spring-expression:jar:3.1.2.RELEASE:compile [INFO] +- org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT:test [INFO] +- org.powermock:powermock-module-junit4:jar:1.4.12:test [INFO] | \- org.powermock:powermock-module-junit4-common:jar:1.4.12:test [INFO] | +- org.powermock:powermock-core:jar:1.4.12:test [INFO] | | \- org.javassist:javassist:jar:3.16.1-GA:test [INFO] | \- org.powermock:powermock-reflect:jar:1.4.12:test [INFO] +- org.powermock:powermock-api-easymock:jar:1.4.12:test [INFO] | \- org.powermock:powermock-api-support:jar:1.4.12:test [INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.5.3:compile [INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.5.3:compile [INFO] +- com.jayway.jsonpath:json-path:jar:0.8.1:test [INFO] | \- net.minidev:json-smart:jar:1.1.1:test [INFO] +- org.aspectj:com.springsource.org.aspectj.weaver:jar:1.6.8.RELEASE:compile [INFO] +- org.slf4j:com.springsource.slf4j.api:jar:1.5.6:compile [INFO] +- org.slf4j:com.springsource.slf4j.org.apache.commons.logging:jar:1.5.6:runtime [INFO] +- org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6:runtime [INFO] +- org.apache.log4j:com.springsource.org.apache.log4j:jar:1.2.15:compile [INFO] +- org.apache.commons:com.springsource.org.apache.commons.dbcp:jar:1.2.2.osgi:runtime [INFO] +- org.apache.commons:com.springsource.org.apache.commons.pool:jar:1.5.3:runtime [INFO] +- org.hamcrest:hamcrest-all:jar:1.3:compile [INFO] +- junit:junit:jar:4.8.1:test (scope not updated to compile) [INFO] +- org.easymock:easymock:jar:3.1:test [INFO] | +- cglib:cglib-nodep:jar:2.2.2:test [INFO] | \- org.objenesis:objenesis:jar:1.2:test [INFO] +- commons-lang:commons-lang:jar:2.6:compile [INFO] +- org.apache.struts:struts2-core:jar:2.2.1:compile [INFO] | +- org.apache.struts.xwork:xwork-core:jar:2.2.1:compile [INFO] | +- org.freemarker:freemarker:jar:2.3.16:compile [INFO] | +- ognl:ognl:jar:3.0:compile [INFO] | +- commons-fileupload:commons-fileupload:jar:1.2.1:compile [INFO] | +- commons-io:commons-io:jar:1.3.2:compile [INFO] | \- com.sun:tools:jar:1.5.0:system [INFO] +- org.apache.struts:struts2-tiles-plugin:jar:2.2.1:compile [INFO] +- org.apache.struts:struts2-spring-plugin:jar:2.2.1:compile [INFO] +- javax.mail:mail:jar:1.4:compile [INFO] | \- javax.activation:activation:jar:1.1:compile [INFO] \- net.tanesha.recaptcha4j:recaptcha4j:jar:0.0.7:compile [INFO] ------- 

thanks

+4
source share
3 answers

If you use maven to create your jar, try creating your jar file with dependencies included and testing it, the link below can help you do this:

How to create an executable dependency JAR using Maven?

0
source

The dependency tree shows:

  • two versions of commons-logging : 1.1 and 1.1.1
  • two versions of slf4j : 1.5.6 and 1.6.1
  • javax.transaction has a compiled scope instead of provided
  • different versions of Hibernate artifacts from different sources org.hibernate:com.springsource.org.hibernate:jar:3.3.2.GA:compile org.hibernate:com.springsource.org.hibernate.annotations:jar:3.4.0.GA:compile org.hibernate:hibernate-validator:jar:4.2.0.Final:compile

Since ClassLoader loads resources without any specific or predefined order, adding a jar file can change this order, and class conflicts are now visible - either inside the EAR / WAR itself, or between the application server and the application.

It is unclear to indicate the source of the conflict with the information provided, but this is probably org.hibernate:hibernate-validator , and you should align its version with the base package, so 3.3.2.GA from com.springsource too.

For diagnostic information, run the WebLogic JVM with the -verbose:class option and look at the output of stderr. The last loaded resources before the failure and registration of previously loaded related classes are the best tips for resolving such a conflict created by the packaging.

If a conflict arises from the application server package and you cannot align it with the same version, WebLogic allows you to set filtering for package downloads by packages to force you to download your version. See the section Using the Class Loader Filter from the class loading documentation .

0
source

It sounds like Jar Hell ... If you have different versions of the same jar, only the first one loads your container ... now, imagine if it loads version 5 jar 1 and version 2 of dependent jar 2 (but the correct version was also 5) ... and it can get a big crash in your system ... to prevent this, in some container just no version is loaded and messages like ClassNotFoundException are thrown.

0
source

Source: https://habr.com/ru/post/1482158/


All Articles