2

Microsoft Windows 7 Professional

WebLogic 11g

Java 1.6 ( the version with weblogic )

Spring 3.1

I was using WebLogic 11g and Spring 3.1 to do Java Webapp development on a Windows XP Professional PC. All was fine.

Then I had to migrate to a new computer running Windows 7 Professional.

I think I may have missed a step in setting everything up to get it all working again.

My webapp is "ACME", acme.war

When I try to navigate to my webapp on my computer I get the following error:

weblogic.application.ModuleException: [HTTP:101216]Servlet: "acme" failed to preload on startup in Web application: "acme.war". org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/acme-servlet.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.add (Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/beans/MutablePropertyValues;

Here is the full stack trace:

weblogic.application.ModuleException: [HTTP:101216]Servlet: 
"acme" failed to preload on startup in Web application: "acme.war".
org.springframework.beans.factory.BeanDefinitionStoreException: 
Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/acme-servlet.xml]; 
nested exception is java.lang.NoSuchMethodError: 
org.springframework.beans.MutablePropertyValues.add
(Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/beans/MutablePropertyValues;

        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader
.java:143)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader
.java:178)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader
.java:149)
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)

        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplica
tionContext.java:123)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:4
22)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:402)
        at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:316)
        at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:282)
        at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:126)
        at javax.servlet.GenericServlet.init(GenericServlet.java:241)
        at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)
        at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
        at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
        at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
        at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1981)
        at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1955)
        at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1874)
        at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3154)
        at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518)
        at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484)
        at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
        at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
        at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
        at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
        at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
        at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:671)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
        at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:44)
        at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
        at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
        at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
        at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
        at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
        at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:149)
        at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
        at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
        at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
        at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
        at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
        at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCa
llbackDeliverer.java:195)
        at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallback
Deliverer.java:13)
        at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliv
erer.java:68)
        at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.add(Ljava/lang/String;Ljava/lang/Object;)L
org/springframework/beans/MutablePropertyValues;
        at org.springframework.web.servlet.config.ResourcesBeanDefinitionParser.registerResourceHandler(ResourcesBeanDefinitionPar
ser.java:93)
        at org.springframework.web.servlet.config.ResourcesBeanDefinitionParser.parse(ResourcesBeanDefinitionParser.java:50)
        at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java
:1297)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java
:1287)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDoc
umentReader.java:135)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinition
DocumentReader.java:92)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507)

        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
        ... 58 more

        at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1520)
        at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484)
        at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.add(Ljava/lang/String;Ljava/lang/Object;)L
org/springframework/beans/MutablePropertyValues;
        at org.springframework.web.servlet.config.ResourcesBeanDefinitionParser.registerResourceHandler(ResourcesBeanDefinitionPar
ser.java:93)
        at org.springframework.web.servlet.config.ResourcesBeanDefinitionParser.parse(ResourcesBeanDefinitionParser.java:50)
        at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java
:1297)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java
:1287)
        Truncated. see log file for complete stacktrace

Here is a copy of my acme-servlet.xml file:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3.1.xsd">

  <context:component-scan base-package="com.acme.controller" />

  <mvc:resources mapping = "/**" location = "/,file:/apps1/bea/user_projects/domains/DBS/common/"/>
  <mvc:annotation-driven/>

  <!-- define the properties file to use -->
  <util:properties id = "messages" location="classpath:/messages.properties" />

  <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name = "prefix" value = "/jsp/"/>
    <property name = "suffix" value = ".jsp"/>
  </bean>

  <bean name="af" class="com.acme.controller.security.AuthenticationFilter"/>

  <!-- Configure the multipart resolver -->
  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="100000000"/>
  </bean>
</beans>

Here is a list of files I have in my war/WEB-INF/lib inside of acme.war:

aopalliance-1.0.jar
commons-beanutils-1.8.2.jar
commons-collections-3.2.1.jar
commons-digester-2.0.jar
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
commons-jexl-2.0.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
commons-validator.jar
dom4j-1.6.1.jar
geronimo-stax-api_1.0_spec-1.0.jar
hibernate-validator-4.3.0.Final.jar
jackson-core-asl-1.9.7.jar
jackson-mapper-asl-1.9.7.jar
jboss-logging-3.1.0.CR2.jar
jstl-api-1.2-rev-1.jar
jstl-impl-1.2.jar
jta-1.1.jar
log4j-1.2.16.jar
mail.jar
poi-3.7.jar
poi-ooxml-3.7.jar
poi-ooxml-schemas-3.7.jar
quartz-1.8.0.jar
quartz-all-1.8.0.jar
servlet-api.jar
slf4j-api-1.5.10.jar
slf4j-log4j12-1.5.10.jar
spring-aop-3.0.6.RELEASE.jar
spring-asm-3.1.1.RELEASE.jar
spring-beans-3.1.1.RELEASE.jar
spring-context-3.1.1.RELEASE.jar
spring-context-support-3.1.1.RELEASE.jar
spring-core-3.1.1.RELEASE.jar
spring-expression-3.1.1.RELEASE.jar
spring-jdbc-3.0.6.RELEASE.jar
spring-ldap-core-1.3.1.RELEASE.jar
spring-security-acl-3.1.0.RELEASE.jar
spring-security-config-3.1.0.RELEASE.jar
spring-security-core-3.1.0.RELEASE.jar
spring-security-crypto-3.1.0.RELEASE.jar
spring-security-ldap-3.1.0.RELEASE.jar
spring-security-taglibs-3.1.0.RELEASE.jar
spring-security-web-3.1.0.RELEASE.jar
spring-tx-3.0.6.RELEASE.jar
spring-web-3.1.1.RELEASE.jar
spring-webmvc-3.1.1.RELEASE.jar
stax-1.2.0.jar
stax-api-1.0.1.jar
urlrewritefilter-4.0.3.jar
validation-api-1.0.0.GA.jar
xml-apis-1.0.b2.jar
xmlbeans-2.3.0.jar

I have my JAVA_HOME envir variable pointed to C:\Oracle\Middleware\jdk160_29 ( this is withing the weblogic 11g installation )

I have that path in my PATH variable.

My system wide Windows CLASSPATH is just a '.'

Thanks in advance for any ideas

Steve


UPDATE

I created a weblogic.xml file, put it in war_root/WEB-INF/ and I got this error message

<Mar 25, 2013 12:12:42 PM EDT> <Error> <Deployer> <BEA-149202> <Encountered an exception while attempting to commit the 1 task for
 the application '_appsdir_acme_war'.>
<Mar 25, 2013 12:12:42 PM EDT> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for applicat
ion '_appsdir_acme_war'.>
<Mar 25, 2013 12:12:42 PM EDT> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: [HTTP:101216]Servlet: "acme" failed to preload on startup in Web application: "acme.war".
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext reso
urce [/WEB-INF/acme-servlet.xml]; nested exception is java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactor
y cannot be cast to javax.xml.parsers.DocumentBuilderFactory

I'm guessing my weblogic.xml is off, here it is:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
  <!-- Use the version of Spring in WEB-INF/lib, not WebLogic's -->
  <wls:container-descriptor>
    <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
  </wls:container-descriptor>
</wls:weblogic-web-app>
Steve
  • 3,127
  • 14
  • 56
  • 96

1 Answers1

4

WLS 11g installation comes with Spring 3.0.5. So Spring 3.0.5 related jar files are in the server classpath by default. Because the server classloader is the parent classloader of your application classloader, the Spring 3.0.5 is the one being used at the runtime. If you use any method that is implemented in Spring 3.1 and not available in Spring 3.0.5, it is understandable that you will get a NoSuchMethodError.

The solution is to add the below section in your weblogic.xml

<wls:container-descriptor>
    <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
Lan
  • 6,470
  • 3
  • 26
  • 37
  • I will try it out Monday when I get back to work. The odd thing is I installed WebLogic 11g on my old PC and did everything the same. No problems. I even hooked up my old PC to see if there were files I missed and the same files ran fine. Maybe I picked some different option without being aware of it when I installed WebLogic 11g this time. I will try the snippet this Monday. Does it need to go into a webLogic.xml or is my web.xml or application-servlet.xml fine? – Steve Mar 23 '13 at 11:37
  • I took your suggestion, but ended getting a different error. I posted the error and my weblogic.xml file above under "update". Thanks for the tips. – Steve Mar 25 '13 at 16:29
  • Try to get rid of the xml-apis-1.0.b2.jar in the WEB-INF/lib folder – Lan Mar 25 '13 at 17:18
  • I ended up reinstalling WebLogic 11g. I don't know what I did differently, but I noticed this time, in the admin page, there were no libraries in the "Deployments" section. I took the weblogic.xml file out of my war and now it works. I never did find where the WebLogic spring libraries were, I am guessing "spring" wasn't in the labels of the wars. Thanks much for the clue, it led to me reinstalling to get rid of the redundant libraries and got my problem fixed. – Steve Mar 25 '13 at 18:18
  • I had the same problem, WLS was picking spring jars from i dont know which place, I pasted your suggestion in my weblogic.xml and the error went away. Thank you very much for the answer. – Tara Singh Sep 04 '13 at 03:17