升级到Spring 3后开始缓慢

时间:2010-01-19 08:59:58

标签: java spring struts2 cglib

我使用Struts2,我的应用程序有数千个由Spring管理的动作类。之前我使用过Spring 2.5.6,我的应用程序很快启动。但是当我把Spring改成3.0时。我的Tomcat启动速度非常慢。 对于每个动作类,我从Spring获得以下调试消息:

DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.List 

几乎每个动作类的每个方法都打印了上面的消息。这就是为什么应用程序花了这么多时间来启动的原因。

下面是我的spring xml的快照,供您参考。

<aop:config proxy-target-class="true"/> <!-- No matter true of false, the problem remains -->
<context:component-scan base-package="com.mycom" scoped-proxy="targetClass"/>

让我附加Spring的完整调试消息,显示创建bean的进度:

2010-01-19 17:07:32,786 [main] DEBUG (DefaultSingletonBeanRegistry.java:214) - Creating shared instance of singleton bean 'CL04001Action'
2010-01-19 17:07:32,786 [main] DEBUG (AbstractAutowireCapableBeanFactory.java:424) - Creating instance of bean 'CL04001Action'
2010-01-19 17:07:32,787 [main] DEBUG (AbstractAutowireCapableBeanFactory.java:498) - Eagerly caching bean 'CL04001Action' to allow for resolving potential circular references
2010-01-19 17:07:32,787 [main] DEBUG (Cglib2AopProxy.java:150) - Creating CGLIB2 proxy: target source is SimpleBeanTargetSource for target bean 'scopedTarget.CL04001Action' of type [com.mycom.action.cl.CL04001Action]
2010-01-19 17:07:32,790 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.action.cl.context.CL04001Context com.mycom.action.cl.CL04001Action.getContext()
2010-01-19 17:07:32,791 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.action.cl.CL04001Action.setContext(com.mycom.action.cl.context.CL04001Context)
2010-01-19 17:07:32,792 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.CL04001Main()
2010-01-19 17:07:32,792 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public int com.mycom.action.cl.CL04001Action.getCounter()
2010-01-19 17:07:32,792 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.action.cl.CL04001Action.setCounter(int)
2010-01-19 17:07:32,793 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.cl04001MainPage()
2010-01-19 17:07:32,793 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.cl04001Permit()
2010-01-19 17:07:32,793 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.cl04001PermitPage()
2010-01-19 17:07:32,794 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.cl03001Confirm() throws java.lang.Exception
2010-01-19 17:07:32,794 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.action.cl.CL04001Action.cl03001Refuse()
2010-01-19 17:07:32,794 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.model.cl.CL04001Model com.mycom.action.cl.CL04001Action.getModel()
2010-01-19 17:07:32,795 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.action.cl.CL04001Action.setModel(com.mycom.model.cl.CL04001Model)
2010-01-19 17:07:32,795 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: protected java.lang.Object com.mycom.core.struts2.action.DefaultEsoafAction.get(java.lang.String)
2010-01-19 17:07:32,795 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.getLanguage()
2010-01-19 17:07:32,796 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: protected void com.mycom.core.struts2.action.DefaultEsoafAction.set(java.lang.String,java.lang.Object)
2010-01-19 17:07:32,796 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.getCountry()
2010-01-19 17:07:32,797 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.getSessionId()
2010-01-19 17:07:32,797 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.core.context.AppContext com.mycom.core.struts2.action.DefaultEsoafAction.getAppContext()
2010-01-19 17:07:32,797 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.loadMessage(java.lang.String,java.lang.String[])
2010-01-19 17:07:32,798 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.loadMessage(java.lang.String)
2010-01-19 17:07:32,798 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.core.context.SystemInfo com.mycom.core.struts2.action.DefaultEsoafAction.getSystemInfo()
2010-01-19 17:07:32,798 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setSystemInfo(com.mycom.core.context.SystemInfo)
2010-01-19 17:07:32,799 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setAppContext(com.mycom.core.context.AppContext)
2010-01-19 17:07:32,807 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: protected void com.mycom.core.struts2.action.DefaultEsoafAction.setGlobalSession(java.lang.String,java.lang.Object)
2010-01-19 17:07:32,807 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: protected java.lang.Object com.mycom.core.struts2.action.DefaultEsoafAction.getGlobalSession(java.lang.String)
2010-01-19 17:07:32,812 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.handleEsoafException(com.mycom.core.exception.DefaultEsoafException,com.mycom.core.struts2.action.DefaultEsoafAction$EType,java.lang.String) throws java.lang.RuntimeException
2010-01-19 17:07:32,813 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.handleEsoafException(com.mycom.core.exception.DefaultEsoafException)
2010-01-19 17:07:32,813 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setCountry(java.lang.String)
2010-01-19 17:07:32,814 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.getSessionTimeoutDuration()
2010-01-19 17:07:32,814 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setJson(java.lang.String)
2010-01-19 17:07:32,815 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.core.model.GeneralModel com.mycom.core.struts2.action.DefaultEsoafAction.getGeneralModel()
2010-01-19 17:07:32,816 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setInit(boolean)
2010-01-19 17:07:32,817 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: protected java.util.Map com.mycom.core.struts2.action.DefaultEsoafAction.initTransacitonSession()
2010-01-19 17:07:32,818 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setInvalidateSession(boolean)
2010-01-19 17:07:32,818 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.mycom.core.struts2.action.DefaultEsoafAction.getInvalidSession()
2010-01-19 17:07:32,819 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.mycom.core.struts2.action.DefaultEsoafAction.getJson()
2010-01-19 17:07:32,820 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.changeLocale()
2010-01-19 17:07:32,821 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setGeneralModel(com.mycom.core.model.GeneralModel)
2010-01-19 17:07:32,822 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.mycom.core.struts2.action.DefaultEsoafAction.setLanguage(java.lang.String)
2010-01-19 17:07:32,823 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.List com.mycom.core.struts2.action.DefaultEsoafAction.buildPageList(int)
2010-01-19 17:07:32,828 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public com.mycom.core.struts2.interceptor.Category com.mycom.core.struts2.action.DefaultEsoafAction.getCatetory()
2010-01-19 17:07:32,829 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.Object com.opensymphony.xwork2.ActionSupport.clone() throws java.lang.CloneNotSupportedException
2010-01-19 17:07:32,830 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.validate()
2010-01-19 17:07:32,831 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.execute() throws java.lang.Exception
2010-01-19 17:07:32,845 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.pause(java.lang.String)
2010-01-19 17:07:32,846 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Locale com.opensymphony.xwork2.ActionSupport.getLocale()
2010-01-19 17:07:32,846 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.input() throws java.lang.Exception
2010-01-19 17:07:32,847 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.addActionError(java.lang.String)
2010-01-19 17:07:33,251 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.setActionErrors(java.util.Collection)
2010-01-19 17:07:33,252 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Collection com.opensymphony.xwork2.ActionSupport.getActionErrors()
2010-01-19 17:07:33,252 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.setActionMessages(java.util.Collection)
2010-01-19 17:07:33,252 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Collection com.opensymphony.xwork2.ActionSupport.getActionMessages()
2010-01-19 17:07:33,253 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Collection com.opensymphony.xwork2.ActionSupport.getErrorMessages()
2010-01-19 17:07:33,253 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Map com.opensymphony.xwork2.ActionSupport.getErrors()
2010-01-19 17:07:33,253 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.setFieldErrors(java.util.Map)
2010-01-19 17:07:33,254 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.Map com.opensymphony.xwork2.ActionSupport.getFieldErrors()
2010-01-19 17:07:33,254 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.opensymphony.xwork2.ActionSupport.hasKey(java.lang.String)
2010-01-19 17:07:33,254 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String[])
2010-01-19 17:07:33,255 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String)
2010-01-19 17:07:33,255 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String)
2010-01-19 17:07:33,255 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String,java.lang.String)
2010-01-19 17:07:33,256 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.util.List)
2010-01-19 17:07:33,256 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String,java.util.List)
2010-01-19 17:07:33,256 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String,java.lang.String[])
2010-01-19 17:07:33,257 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String,java.util.List,com.opensymphony.xwork2.util.ValueStack)
2010-01-19 17:07:33,257 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.getText(java.lang.String,java.lang.String,java.lang.String[],com.opensymphony.xwork2.util.ValueStack)
2010-01-19 17:07:33,258 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.ResourceBundle com.opensymphony.xwork2.ActionSupport.getTexts()
2010-01-19 17:07:33,258 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.ResourceBundle com.opensymphony.xwork2.ActionSupport.getTexts(java.lang.String)
2010-01-19 17:07:33,258 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.addActionMessage(java.lang.String)
2010-01-19 17:07:33,259 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.addFieldError(java.lang.String,java.lang.String)
2010-01-19 17:07:33,259 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String com.opensymphony.xwork2.ActionSupport.doDefault() throws java.lang.Exception
2010-01-19 17:07:33,259 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.opensymphony.xwork2.ActionSupport.hasActionErrors()
2010-01-19 17:07:33,260 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.opensymphony.xwork2.ActionSupport.hasActionMessages()
2010-01-19 17:07:33,260 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.opensymphony.xwork2.ActionSupport.hasErrors()
2010-01-19 17:07:33,260 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public boolean com.opensymphony.xwork2.ActionSupport.hasFieldErrors()
2010-01-19 17:07:33,261 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.clearFieldErrors()
2010-01-19 17:07:33,261 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.clearActionErrors()
2010-01-19 17:07:33,261 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.clearMessages()
2010-01-19 17:07:33,262 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.clearErrors()
2010-01-19 17:07:33,262 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public void com.opensymphony.xwork2.ActionSupport.clearErrorsAndMessages()
2010-01-19 17:07:33,262 [main] DEBUG (Cglib2AopProxy.java:753) - Found finalize() method - using NO_OVERRIDE
2010-01-19 17:07:33,263 [main] DEBUG (Cglib2AopProxy.java:770) - Found 'hashCode' method: public native int java.lang.Object.hashCode()
2010-01-19 17:07:33,263 [main] DEBUG (Cglib2AopProxy.java:765) - Found 'equals' method: public boolean java.lang.Object.equals(java.lang.Object)
2010-01-19 17:07:33,263 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.lang.String java.lang.Object.toString()
2010-01-19 17:07:33,264 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public abstract java.lang.Object org.springframework.aop.scope.ScopedObject.getTargetObject()
2010-01-19 17:07:33,264 [main] DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public abstract void org.springframework.aop.scope.ScopedObject.removeFromScope()
2010-01-19 17:07:33,264 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract int org.springframework.aop.framework.Advised.indexOf(org.aopalliance.aop.Advice)
2010-01-19 17:07:33,265 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract int org.springframework.aop.framework.Advised.indexOf(org.springframework.aop.Advisor)
2010-01-19 17:07:33,265 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isFrozen()
2010-01-19 17:07:33,265 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract org.springframework.aop.TargetSource org.springframework.aop.framework.Advised.getTargetSource()
2010-01-19 17:07:33,266 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvisor(org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,266 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvisor(int,org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,266 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setTargetSource(org.springframework.aop.TargetSource)
2010-01-19 17:07:33,267 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setPreFiltered(boolean)
2010-01-19 17:07:33,267 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isProxyTargetClass()
2010-01-19 17:07:33,267 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setExposeProxy(boolean)
2010-01-19 17:07:33,268 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isExposeProxy()
2010-01-19 17:07:33,268 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvice(org.aopalliance.aop.Advice) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,268 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvice(int,org.aopalliance.aop.Advice) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,269 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isPreFiltered()
2010-01-19 17:07:33,269 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract java.lang.Class[] org.springframework.aop.framework.Advised.getProxiedInterfaces()
2010-01-19 17:07:33,269 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isInterfaceProxied(java.lang.Class)
2010-01-19 17:07:33,270 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract org.springframework.aop.Advisor[] org.springframework.aop.framework.Advised.getAdvisors()
2010-01-19 17:07:33,270 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.removeAdvisor(int) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,270 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.removeAdvisor(org.springframework.aop.Advisor)
2010-01-19 17:07:33,271 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.replaceAdvisor(org.springframework.aop.Advisor,org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2010-01-19 17:07:33,271 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.removeAdvice(org.aopalliance.aop.Advice)
2010-01-19 17:07:33,271 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract java.lang.String org.springframework.aop.framework.Advised.toProxyConfigString()
2010-01-19 17:07:33,272 [main] DEBUG (Cglib2AopProxy.java:759) - Method is declared on Advised interface: public abstract java.lang.Class org.springframework.aop.TargetClassAware.getTargetClass()
2010-01-19 17:07:33,372 [main] DEBUG (AbstractBeanFactory.java:241) - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2010-01-19 17:07:33,373 [main] DEBUG (AbstractAutowireCapableBeanFactory.java:452) - Finished creating instance of bean 'CL04001Action'

5 个答案:

答案 0 :(得分:2)

从表面上看,它实际上看起来像是一个AOPConfig问题。你在使用任何方面吗?显然它试图拦截一个方法调用。

它直接抱怨和AOPConfig异常,所以AOP方面肯定会发生一些事情。

要么你使用AOP引入了这个bug,要么你还没有正确升级到Spring 3,而且Spring 3中内置的AOP用法存在问题,即你的配置很可疑。

检查Spring配置并确保已正确升级。

注意:看起来你在Spring中使用autowire,这意味着根据Spring规则,配置的某些部分可能无法正确自动装配。

答案 1 :(得分:1)

假设您没有兴趣建议调试日志中列出的任何方法,并根据您使用的日志框架,将您不感兴趣的软件包的日志级别更改为INFO或更高版本。

例如,如果您使用的是LOG4J

log4j.logger.org.springframework=INFO

这将清除日志中的所有混乱,从而提高启动性能

答案 2 :(得分:0)

我在spring source中找到了以下内容(可能不是spring 3,但仍然是同一个类和消息)

// Check to see if we have fixed interceptor to serve this method.
if (isStatic && isFrozen && fixedInterceptorMap.containsKey(key)) {
   ....
} else {
  logger.debug("Unable to apply any optimisations to advised " +
       "method " + method + " - using AOP_PROXY");
}

我不知道拦截器的“冻结”和“固定”含义是什么,但我认为忽略此消息是安全的,因为大多数建议似乎都是非冻结和非固定的。

更重要的是 - 它是一个调试消息。如果它是WARN或更高,它应该打扰你。将log4j配置更改为不显示DEBUG,并查看您的启动时间。也许问题出在其他地方。

答案 3 :(得分:0)

尝试增加tomcat的堆大小。众所周知,Spring 3.0使用的内存多于2.X

https://jira.springsource.org/browse/SPR-6775

答案 4 :(得分:-1)

我从未使用过基于CGI的代理,但基于JDK的代理需要接口来执行AOP。如果界面是个问题,请尝试以下解决方案。

典型的struts动作类如下所示。请注意,它不实现任何接口。

public class MyAction extends Action {
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
              :
 }
}

要解决此问题,请使用与Struts Action类相同的execute()方法创建一个接口。

public interface IAction {
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response);
}

在所有操作中实施此界面

public class MyAction extends Action implements IAction {
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
              :
 }
}