You should try to extend
the class BasicHandler from org.apache.axis.handlers instead of GenericHandler
from JAX-RPC.
BasicHandler is the base
class of all the handlers built-in with Axis.
You may replace the GenericHandler’s
methods handleRequest and handleResponse with BasicHandler’s invoke.
De : Feng Xie (fxie)
[mailto:[EMAIL PROTECTED]
Envoyé : mardi 30
août 2005 23:28
À : axis-user@ws.apache.org
Objet : classCastError after
deploy a customized handler
I developed a customized handler which extends
GenericHandler and implemented it to log soap request message, its complete
code is like :
public class SoapMsgLogHandler extends GenericHandler {
private Logger soapLogger = null;
public void init(HandlerInfo config) {
soapLogger =
SubscriberDataMgrBindingImpl.baseContext.getCtxLog();
}
public QName[] getHeaders() {
return new QName[0];
}
private boolean logMessage(MessageContext
context, OutputStream out) {
if ((soapLogger != null) &&
(soapLogger.getLevel().toInt() <= Level.DEBUG.toInt()))
{
SOAPMessageContext smg =
(SOAPMessageContext) context;
try {
smg.getMessage().writeTo(out);
soapLogger.debug(out.toString());
} catch (Exception e) {}
return
true;
}
else
return false;
}
public boolean
handleRequest(MessageContext context) {
return logMessage(context,System.out);
}
public boolean
handleResponse(MessageContext context) {
return
logMessage(context,System.out);
}
I add it into the requestFlow of one service, I did
deploy it. However, while I was to invoke that service, I got SoapFault which
indicates following error
faultString: org.apache.axis.ConfigurationException:
java.lang.ClassCastException
java.lang.ClassCastException
at
org.apache.axis.deployment.wsdd.WSDDDeployableItem.makeNewInstance(WSDDDeployableItem.java:302)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
at
org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
at
org.apache.axis.deployment.wsdd.WSDDChain.makeNewInstance(WSDDChain.java:125)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
at
org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
at
org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:422)
at
org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
at
org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
at org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:460)
at
org.apache.axis.configuration.FileProvider.getService(FileProvider.java:231)
at org.apache.axis.AxisEngine.getService(AxisEngine.java:311)
at
org.apache.axis.MessageContext.setTargetService(MessageContext.java:755)
at org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:50)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:239)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
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:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:534)
Has anyone run into this kind of problem before ?