users@jax-rpc.java.net

ClassCastException in JAX-RPC Message Handlers

From: <rel_haff_at_welho.com>
Date: Tue, 15 Mar 2005 14:42:12 +0200

Hi,

I have built a small webservice with JAX-RPC, that runs under Sun Java system
application server pe 8.1 (2005Q1). The service runs fine but when I add a
handler to it, I get ClassCastException. I deployed the service with
deploytool.

Here is the code of my test handler:


package ApiTaMo;
 
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
 
 
public class testHandler implements javax.xml.rpc.handler.Handler
{
    private QName[] headers;
    
    public testHandler() {
    }
 
    public void init(HandlerInfo config) {
        headers = config.getHeaders();
        System.out.println("Init...");
    }
 
    public boolean handleFault(MessageContext context) {
        System.out.println("handleFault...");
            return true;
    }
 
    public boolean handleRequest (MessageContext context) {
        System.out.println("handleRequest...");
            return true;
    }
 
    public boolean handleResponse (MessageContext context) {
        System.out.println("handleResponse...");
        return true;
    }
 
    public javax.xml.namespace.QName[] getHeaders() {
      return headers;
    }
 
    public void destroy() {
    }
}



and here is the stacktrace:
[#|2005-03-10T12:04:54.656+0200|SEVERE|sun-appserver-
pe8.1|com.sun.xml.rpc.serv er|_ThreadID=25;|JAXRPCTIE01: caught exception
while handling request: java.lang.ClassCastException
java.lang.ClassCastException
at com.sun.enterprise.webservice.WsUtil.throwSOAPFaultException
(WsUtil.java:972)
at com.sun.enterprise.webservice.ServletPreHandler.handleRequest
(ServletPreHandler .java:68)
at com.sun.xml.rpc.client.HandlerChainImpl.handleRequest
(HandlerChainImpl.java:86)
at com.sun.xml.rpc.server.StreamingHandler.callRequestHandlers
(StreamingHandler.ja va:918)
at com.sun.xml.rpc.server.StreamingHandler.preHandlingHook
(StreamingHandler.java:8 31)
at ApiTaMo.TamoIF_Tie.preHandlingHook(TamoIF_Tie.java:236)
at com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:102)
at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost
(JAXRPCServletDelegate. java:443)
at com.sun.enterprise.webservice.JAXRPCServlet.doPost(JAXRPCServlet.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:767)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.ja va:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege
(SecurityUtil.java:165)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFil terChain.java:257)
at org.apache.catalina.core.ApplicationFilterChain.access$000
(ApplicationFilterCha in.java:55)
at org.apache.catalina.core.ApplicationFilterChain$1.run
(ApplicationFilterChain.ja va:161)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain .java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java: 263)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextVal ve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java: 173)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:161)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:13 2)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:933)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:184)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process
(ProcessorTask.ja va:653)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process
(ProcessorTask.ja va:534)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask
(ProcessorTask.jav a:403)
at com.sun.enterprise.web.connector.grizzly.WorkerThread.run
(WorkerThread.java:55)
|#]

Can someone please help me with this? Is there something wrong with the code?

---
Rami