I submitted some Spring code to the mailing list a while ago.
If you use the GenericContext (I think its that one) you can set your own classloader.
So you need to get the Axis AAR classloader from there.
Paul
On 1/19/06, Inigo Surguy (JIRA) <[EMAIL PROTECTED]> wrote:
[ http://issues.apache.org/jira/browse/AXIS2-400?page=comments#action_12363242 ]
Inigo Surguy commented on AXIS2-400:
------------------------------------
A possible workaround:
Before using Spring, explicitly set the context classloader with:
Thread.currentThread().setContextClassLoader(MyClass.class.getClassLoader());
> Classloader doesn't work with Spring inside an AAR
> --------------------------------------------------
>
> Key: AXIS2-400
> URL: http://issues.apache.org/jira/browse/AXIS2-400
> Project: Apache Axis 2.0 (Axis2)
> Type: Bug
> Components: core
> Versions: 0.94
> Environment: Tomcat 5.5, Axis 0.94, Windows XP, Java 5
> Reporter: Inigo Surguy
> Attachments: ClasspathTest.java, MyBean.java, testClasspath.aar
>
> The classloader used for AAR doesn't work with Spring - when I put Spring inside the lib directory of the AAR, it's not able to access its applicationContext.xml. If I move the applicationContext to the WEB-INF/classes directory, then Spring is able to find it, but not to load the classes defined in it from the AAR.
> However, I am able to access files in the AAR from within my own code directly inside the .AAR.
> When I initially tried to reproduce this, I thought I wasn't able to access the contents of the .AAR at all - but I think this was because I was connecting to Tomcat via a debugger and running the "getResource" code in the context of the debug session, which seems to have given different results than when I call getResource from code.
> This sounds like the behaviour I'd expect if Spring was in the Axis lib directory - but it isn't.
> --
> Error:
> org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'myBean' defined in class path resource [ testApplicationContext.xml]: Bean class [classpathtest.MyBean] not found; nested exception is java.lang.ClassNotFoundException: classpathtest.MyBean
> Full error:
> ?
> <soapenv:Envelope>
> <soapenv:Header/>
> ?
> <soapenv:Body>
> ?
> <soapenv:Fault>
> <faultcode>Client</faultcode>
> ?
> <faultstring>
> IOException parsing XML document from class path resource [ testApplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [testApplicationContext.xml] cannot be opened because it does not exist; nested exception is:
> org.springframework.beans.factory.BeanDefinitionStoreException : IOException parsing XML document from class path resource [testApplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [testApplicationContext.xml] cannot be opened because it does not exist
> </faultstring>
> <faultactor>http://myAxisServer/role/default</faultactor>
> ?
> <detail>
> ?
> <soapenv:Exception>
> org.apache.axis2.AxisFault: IOException parsing XML document from class path resource [testApplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [testApplicationContext.xml ] cannot be opened because it does not exist; nested exception is:
> org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [testApplicationContext.xml ]; nested exception is java.io.FileNotFoundException: class path resource [testApplicationContext.xml] cannot be opened because it does not exist
> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:254)
> at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:118)
> at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java :37)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:331)
> at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPGetRequest(HTTPTransportUtils.java:147)
> at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java :802)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :173)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
> at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
> at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> at java.lang.Thread.run (Thread.java:595)
> Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [testApplicationContext.xml]; nested exception is java.io.FileNotFoundException : class path resource [testApplicationContext.xml] cannot be opened because it does not exist
> at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java :180)
> at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)
> at org.springframework.beans.factory.xml.XmlBeanFactory.<init>( XmlBeanFactory.java:68)
> at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:56)
> at classpathtest.ClasspathTest.testSpring(ClasspathTest.java:20)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:97)
> ... 20 more
> Caused by: java.io.FileNotFoundException: class path resource [testApplicationContext.xml] cannot be opened because it does not exist
> at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java :137)
> at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:167)
> ... 29 more
> </soapenv:Exception>
> </detail>
> </soapenv:Fault>
> </soapenv:Body>
> </soapenv:Envelope>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
--
Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
http://bloglines.com/blog/paulfremantle
[EMAIL PROTECTED]
"Oxygenating the Web Service Platform", www.wso2.com
