You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Davor Cengija <da...@mail.inet.hr> on 2001/11/27 14:00:03 UTC
no signature match problems
Hi
I recently started with SOAP and I'm already in deep problems
:-)
In short:
{mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
http://localhost:2507/mysoap/servlet/msgrouter list
Ouch, the call failed:
Fault Code = SOAP-ENV:Server
Fault String = Exception while handling service request:
org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apache.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature match
So, no signature match for list(env, req, req), and that's
true: there's no such a method.
What could be wrong? Somehow I think that
org/apache/soap/util/MethodUtils is misinterpretting the error
message.
Here's some detailed explanation:
I'm using SOAP-2.2 with Tomcat 4.0 and/or Resin 2.0.3 on
Linux, JDK 1.3.0 by IBM (tried Sun's JDK 1.2.2 as well). Soap
is 2.2 although I tried with 2.1 and 2001-11-26 nightly build
with the same result. Xerces is 1.4.4 (tried with 1.2.3,
1.2.0). Classpath is clean, no signs of soap anywhere except
soap-2.2
So, simple SOAP-RPC example from www.onjava.com works just
fine, servlet is working, and my client is communicating using
SOAP. TcpTunnelGui shows messages and everything is just fine:
{mandrake}[resin]$ java org.apache.soap.server.ServiceManagerClient
http://localhost:2507/mysoap/servlet/rpcrouter list
Deployed Services:
urn:cd-catalog
{mandrake}[classes]$ java javaxml2.CDLister
http://localhost:2507/mysoap/servlet/rpcrouter
Listing current CD catalog.
'Vespertine' by Bjork, on One Little Indian
'Back On Top' by Van Morrison, on Epic
'Asylum Years' by Tom Waits, on Asylum Records
'Muy Divertido' by Marc Ribot, on Atlantic
Etc..
But, when I tried with MessageRouterServlet, I cannot make it
deploy or list or anything else. Here's the message:
{mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
http://localhost:2507/mysoap/servlet/msgrouter list
Ouch, the call failed:
Fault Code = SOAP-ENV:Server
Fault String = Exception while handling service request:
org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apache.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature match
(Don't be confused by the servlet mapping, everything is set
up properly, I hope, at least I have a message from
http://localhost:2507/mysoap/servlet/msgrouter saying it
accepts POST only).
I tried to narrow down the exception and discovered it happens
in MethodUtils.getEntryPoint (which is not surprizing).
Here's the stack trace (ignore line numbers in MethodUtils,
they are shifted by 5 or 6, since I added printStackTrace()
statement)
java.lang.NoSuchMethodException:
org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apache.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext)
-- no signature match
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at
java.lang.NoSuchMethodException.<init>(NoSuchMethodException.java:41)
at
org.apache.soap.util.MethodUtils.getEntryPoint(MethodUtils.java:201)
at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:557)
at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:537)
at
org.apache.soap.server.MessageRouter.invoke(MessageRouter.java:54)
at
org.apache.soap.providers.MsgJavaProvider.invoke(MsgJavaProvider.java:125)
at
org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServlet.java:268)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at
com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:82)
at com.caucho.server.http.Invocation.service(Invocation.java:277)
at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:498)
I'm trying different combinations and in every case rpcrouter
is working good (listing, deploying etc) while msgrouter
always fails.
I'll try implementing (again) a simple list(env, req, req)
method which just calls list() in ServiceManager but I
remember doing it already and then I got IOException (I think,
don't have stack trace).
Oops, it looks like I actually have it:
java.io.IOException: Message is empty!
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at java.io.IOException.<init>(IOException.java:49)
at
org.apache.soap.rpc.SOAPContext.writeTo(SOAPContext.java:505)
at
org.apache.soap.transport.TransportMessage.save(TransportMessage.java:308)
at
org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServlet.java:317)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at
com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:82)
at
com.caucho.server.http.Invocation.service(Invocation.java:277)
at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:498)
and
[2001/11/26 16:14:14] Error building response envelope:
java.io.IOException: Message is empty!
javax.servlet.ServletException: Error building response envelope:
java.io.IOException: Message is empty!
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at
javax.servlet.ServletException.<init>(ServletException.java:76)
at
org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServlet.java:336)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at
com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:82)
at
com.caucho.server.http.Invocation.service(Invocation.java:277)
at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:498)
which is understandable since something somewhere is trying to
read the Envelope and it doesn't exist.
So, if somebody managed reading this mail until the end, I
hope he/she will at least understand what's the problem.
Thanks!!
--
Davor Cengija
davor.cengija@mail.inet.hr
Re: no signature match problems
Posted by Fred Meredith <fm...@nc.rr.com>.
Your problem is that for MessageRouter Services, you DO need to specify
functions on the server side code that match the signature
function_name(Envelope env, SOAPContext resCtx, SOAPContext reqCtx)
* The order of the SOAPContext parameters may not be correct; check the
sample code.
MessageRouter Services differ from RPC Services on the server side by the
function signature that you're having a problem with now, and on the client
side in how that service is invoked.
> {mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/msgrouter list
> Ouch, the call failed:
> Fault Code = SOAP-ENV:Server
> Fault String = Exception while handling service request:
>
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
>
>
> So, no signature match for list(env, req, req), and that's
> true: there's no such a method.
>
> What could be wrong? Somehow I think that
> org/apache/soap/util/MethodUtils is misinterpretting the error
> message.
>
>
> Here's some detailed explanation:
>
> I'm using SOAP-2.2 with Tomcat 4.0 and/or Resin 2.0.3 on
> Linux, JDK 1.3.0 by IBM (tried Sun's JDK 1.2.2 as well). Soap
> is 2.2 although I tried with 2.1 and 2001-11-26 nightly build
> with the same result. Xerces is 1.4.4 (tried with 1.2.3,
> 1.2.0). Classpath is clean, no signs of soap anywhere except
> soap-2.2
>
> So, simple SOAP-RPC example from www.onjava.com works just
> fine, servlet is working, and my client is communicating using
> SOAP. TcpTunnelGui shows messages and everything is just fine:
>
> {mandrake}[resin]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/rpcrouter list
> Deployed Services:
> urn:cd-catalog
>
> {mandrake}[classes]$ java javaxml2.CDLister
> http://localhost:2507/mysoap/servlet/rpcrouter
> Listing current CD catalog.
> 'Vespertine' by Bjork, on One Little Indian
> 'Back On Top' by Van Morrison, on Epic
> 'Asylum Years' by Tom Waits, on Asylum Records
> 'Muy Divertido' by Marc Ribot, on Atlantic
>
> Etc..
>
> But, when I tried with MessageRouterServlet, I cannot make it
> deploy or list or anything else. Here's the message:
>
> {mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/msgrouter list
> Ouch, the call failed:
> Fault Code = SOAP-ENV:Server
> Fault String = Exception while handling service request:
>
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
>
>
> (Don't be confused by the servlet mapping, everything is set
> up properly, I hope, at least I have a message from
> http://localhost:2507/mysoap/servlet/msgrouter saying it
> accepts POST only).
>
> I tried to narrow down the exception and discovered it happens
> in MethodUtils.getEntryPoint (which is not surprizing).
>
> Here's the stack trace (ignore line numbers in MethodUtils,
> they are shifted by 5 or 6, since I added printStackTrace()
> statement)
>
> java.lang.NoSuchMethodException:
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at
> java.lang.NoSuchMethodException.<init>(NoSuchMethodException.java:41)
> at
> org.apache.soap.util.MethodUtils.getEntryPoint(MethodUtils.java:201)
> at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:557)
> at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:537)
> at
> org.apache.soap.server.MessageRouter.invoke(MessageRouter.java:54)
> at
>
> org.apache.soap.providers.MsgJavaProvider.invoke(MsgJavaProvider.java:125)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:268) at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:103) at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at com.caucho.server.http.Invocation.service(Invocation.java:277) at
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
> at
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
> at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
> at java.lang.Thread.run(Thread.java:498)
>
>
>
> I'm trying different combinations and in every case rpcrouter
> is working good (listing, deploying etc) while msgrouter
> always fails.
>
> I'll try implementing (again) a simple list(env, req, req)
> method which just calls list() in ServiceManager but I
> remember doing it already and then I got IOException (I think,
> don't have stack trace).
>
> Oops, it looks like I actually have it:
>
>
> java.io.IOException: Message is empty!
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at java.io.IOException.<init>(IOException.java:49)
> at
> org.apache.soap.rpc.SOAPContext.writeTo(SOAPContext.java:505)
> at
>
> org.apache.soap.transport.TransportMessage.save(TransportMessage.java:308)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:317) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
> at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at
> com.caucho.server.http.Invocation.service(Invocation.java:277)
> at
>
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129) at
>
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216) at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140) at
> java.lang.Thread.run(Thread.java:498)
>
>
> and
>
> [2001/11/26 16:14:14] Error building response envelope:
> java.io.IOException: Message is empty!
> javax.servlet.ServletException: Error building response envelope:
> java.io.IOException: Message is empty!
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at
> javax.servlet.ServletException.<init>(ServletException.java:76)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:336) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
> at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at
> com.caucho.server.http.Invocation.service(Invocation.java:277)
> at
>
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129) at
>
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216) at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140) at
> java.lang.Thread.run(Thread.java:498)
>
>
> which is understandable since something somewhere is trying to
> read the Envelope and it doesn't exist.
>
>
> So, if somebody managed reading this mail until the end, I
> hope he/she will at least understand what's the problem.
>
> Thanks!!
Re: no signature match problems
Posted by Fred Meredith <fm...@nc.rr.com>.
Your problem is that for MessageRouter Services, you DO need to specify
functions on the server side code that match the signature
function_name(Envelope env, SOAPContext resCtx, SOAPContext reqCtx)
* The order of the SOAPContext parameters may not be correct; check the
sample code.
MessageRouter Services differ from RPC Services on the server side by the
function signature that you're having a problem with now, and on the client
side in how that service is invoked.
> {mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/msgrouter list
> Ouch, the call failed:
> Fault Code = SOAP-ENV:Server
> Fault String = Exception while handling service request:
>
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
>
>
> So, no signature match for list(env, req, req), and that's
> true: there's no such a method.
>
> What could be wrong? Somehow I think that
> org/apache/soap/util/MethodUtils is misinterpretting the error
> message.
>
>
> Here's some detailed explanation:
>
> I'm using SOAP-2.2 with Tomcat 4.0 and/or Resin 2.0.3 on
> Linux, JDK 1.3.0 by IBM (tried Sun's JDK 1.2.2 as well). Soap
> is 2.2 although I tried with 2.1 and 2001-11-26 nightly build
> with the same result. Xerces is 1.4.4 (tried with 1.2.3,
> 1.2.0). Classpath is clean, no signs of soap anywhere except
> soap-2.2
>
> So, simple SOAP-RPC example from www.onjava.com works just
> fine, servlet is working, and my client is communicating using
> SOAP. TcpTunnelGui shows messages and everything is just fine:
>
> {mandrake}[resin]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/rpcrouter list
> Deployed Services:
> urn:cd-catalog
>
> {mandrake}[classes]$ java javaxml2.CDLister
> http://localhost:2507/mysoap/servlet/rpcrouter
> Listing current CD catalog.
> 'Vespertine' by Bjork, on One Little Indian
> 'Back On Top' by Van Morrison, on Epic
> 'Asylum Years' by Tom Waits, on Asylum Records
> 'Muy Divertido' by Marc Ribot, on Atlantic
>
> Etc..
>
> But, when I tried with MessageRouterServlet, I cannot make it
> deploy or list or anything else. Here's the message:
>
> {mandrake}[classes]$ java org.apache.soap.server.ServiceManagerClient
> http://localhost:2507/mysoap/servlet/msgrouter list
> Ouch, the call failed:
> Fault Code = SOAP-ENV:Server
> Fault String = Exception while handling service request:
>
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
>
>
> (Don't be confused by the servlet mapping, everything is set
> up properly, I hope, at least I have a message from
> http://localhost:2507/mysoap/servlet/msgrouter saying it
> accepts POST only).
>
> I tried to narrow down the exception and discovered it happens
> in MethodUtils.getEntryPoint (which is not surprizing).
>
> Here's the stack trace (ignore line numbers in MethodUtils,
> they are shifted by 5 or 6, since I added printStackTrace()
> statement)
>
> java.lang.NoSuchMethodException:
> org.apache.soap.server.ServiceManager.list(org.apache.soap.Envelope,org.apa
>che.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature
> match
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at
> java.lang.NoSuchMethodException.<init>(NoSuchMethodException.java:41)
> at
> org.apache.soap.util.MethodUtils.getEntryPoint(MethodUtils.java:201)
> at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:557)
> at org.apache.soap.util.MethodUtils.getMethod(MethodUtils.java:537)
> at
> org.apache.soap.server.MessageRouter.invoke(MessageRouter.java:54)
> at
>
> org.apache.soap.providers.MsgJavaProvider.invoke(MsgJavaProvider.java:125)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:268) at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:103) at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at com.caucho.server.http.Invocation.service(Invocation.java:277) at
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
> at
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
> at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
> at java.lang.Thread.run(Thread.java:498)
>
>
>
> I'm trying different combinations and in every case rpcrouter
> is working good (listing, deploying etc) while msgrouter
> always fails.
>
> I'll try implementing (again) a simple list(env, req, req)
> method which just calls list() in ServiceManager but I
> remember doing it already and then I got IOException (I think,
> don't have stack trace).
>
> Oops, it looks like I actually have it:
>
>
> java.io.IOException: Message is empty!
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at java.io.IOException.<init>(IOException.java:49)
> at
> org.apache.soap.rpc.SOAPContext.writeTo(SOAPContext.java:505)
> at
>
> org.apache.soap.transport.TransportMessage.save(TransportMessage.java:308)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:317) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
> at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at
> com.caucho.server.http.Invocation.service(Invocation.java:277)
> at
>
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129) at
>
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216) at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140) at
> java.lang.Thread.run(Thread.java:498)
>
>
> and
>
> [2001/11/26 16:14:14] Error building response envelope:
> java.io.IOException: Message is empty!
> javax.servlet.ServletException: Error building response envelope:
> java.io.IOException: Message is empty!
> at java.lang.Throwable.<init>(Throwable.java:96)
> at java.lang.Exception.<init>(Exception.java:44)
> at
> javax.servlet.ServletException.<init>(ServletException.java:76)
> at
>
> org.apache.soap.server.http.MessageRouterServlet.doPost(MessageRouterServle
>t.java:336) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
> at
>
> com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:
>82) at
> com.caucho.server.http.Invocation.service(Invocation.java:277)
> at
>
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129) at
>
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216) at
>
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
> at com.caucho.server.TcpConnection.run(TcpConnection.java:140) at
> java.lang.Thread.run(Thread.java:498)
>
>
> which is understandable since something somewhere is trying to
> read the Envelope and it doesn't exist.
>
>
> So, if somebody managed reading this mail until the end, I
> hope he/she will at least understand what's the problem.
>
> Thanks!!