I've got a class loading problem I hope someone here can help with. The symptom is that Saxon 8.9 (which I compile from sources so I know its in my .aar) was unable to find an extension function (LdapQuery) in the same .aar. I hacked around this by setting Saxon's classloader manually (to LdapQuery.class.getClassLoader()). That worked for awhile, then another problem mysteriously turned up where javax.xml.parsers.SAXParserFactory is unable to reference some method in its implementation class. Sorry; can't provide the exact name. This problem only turned up on WindowsXP (at work) and can't be reproduced under MacOSX (where I am now), so I can't provide the exact path.
Possibly involved here.... the Saxon set-up occurs during the service init() which builds compiled instances that are used during method execution. Does init() and exec() use the same class loaders or what? My understanding is still very poor. But as an experiment I just tried putting this in services.xml <parameter name="EnableChildFirstClassLoading">true</parameter> That failed as shown below. PdpSamlServiceMessageReceiverInOut is generated by the WSO2 wsdl to java tool as public class PdpSamlServiceMessageReceiverInOut extends org.apache.axis2.receivers.AbstractInOutMessageReceiver, which I assume (don't have source handy) implements org.apache.axis2.engine.MessageReceiver. So I'm assuming this is another class loader issue. Error: org.apache.axis2.deployment.DeploymentException: com.technica.www.PdpSamlServiceMessageReceiverInOut cannot be cast to org.apache.axis2.engine.MessageReceiver at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:150) at org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:81) at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:390) at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:384) at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:64) at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:71) at org.apache.axis2.deployment.scheduler.Scheduler$SchedulerTimerTask.run(Scheduler.java:90) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462) Caused by: java.lang.ClassCastException: com.technica.www.PdpSamlServiceMessageReceiverInOut cannot be cast to org.apache.axis2.engine.MessageReceiver at org.apache.axis2.deployment.DescriptionBuilder.loadMessageReceiver(DescriptionBuilder.java:192) at org.apache.axis2.deployment.DescriptionBuilder.processMessageReceivers(DescriptionBuilder.java:171) at org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:278) at org.apache.axis2.deployment.ServiceGroupBuilder.populateServiceGroup(ServiceGroupBuilder.java:101) at org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:109) at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:143) ... 12 more Can someone explain what's happening here? What tools do you use to resolve such problems? Should I stick with childFirst? _______________________________________________ Carbon-dev mailing list [email protected] https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
