This is what happens when I try to access the service:
faultString: Tried to invoke method public abstract com.telebahiacelular.movistore.acao.value.AcaoPKModel com.telebahiacelular.movistore.acao.interfaces.Acao.inserir(com.telebahiacelular.movistore.acao.value.AcaoModel) throws javax.ejb.CreateException,java.rmi.RemoteException with arguments com.telebahiacelular.movistore.acao.value.AcaoModel. The arguments do not match the signature.
The service is actually a Stateless Session Bean deployed on JBoss. See previous messages from this same thread.
Attached goes:
1) The SOAP request and response, as captured by tcpmon
2) The complete fault stack trace
3) The service WSDD descriptor
4) The service interface
5) The client source code
Environment: JBoss 3.2.0beta2 + Apache Axis 2002-11-26 interim drop.
--
Pazu <[EMAIL PROTECTED]>
Listen Port: 8088 Target Host: localhost Target Port: 8080 ==== Request ==== POST /jboss-net/services/Acao HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.0 Host: localhost Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 964
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:inserir soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:telebahiacelular/movistore/acao"> <in0 href="#id0"/> </ns1:inserir> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:AcaoModel" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:telebahiacelular/movistore/acao"> <codTela xsi:type="soapenc:int">1</codTela> <codUsuario xsi:type="soapenc:int">1</codUsuario> <descricao xsi:type="soapenc:string">Teste WSR</descricao> <descricaoResumida xsi:type="soapenc:string" xsi:nil="true"/> <codigo xsi:type="soapenc:int" xsi:nil="true"/> </multiRef> </soapenv:Body> </soapenv:Envelope> ==== Response ==== HTTP/1.1 500 Internal Server Error Date: Tue, 26 Nov 2002 18:33:35 GMT Server: Jetty/4.1.3 (Windows 2000 5.0 x86) Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode xmlns:ns1="http://www.w3.org/2002/06/soap-envelope">ns1:Server.generalException</faultcode> <faultstring>Tried to invoke method public abstract com.telebahiacelular.movistore.acao.value.AcaoPKModel com.telebahiacelular.movistore.acao.interfaces.Acao.inserir(com.telebahiacelular.movistore.acao.value.AcaoModel) throws javax.ejb.CreateException,java.rmi.RemoteException with arguments com.telebahiacelular.movistore.acao.value.AcaoModel. The arguments do not match the signature.</faultstring> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
AxisFault
faultCode: {http://www.w3.org/2002/06/soap-envelope}Server.generalException
faultSubcode:
faultString: Tried to invoke method public abstract
com.telebahiacelular.movistore.acao.value.AcaoPKModel
com.telebahiacelular.movistore.acao.interfaces.Acao.inserir(com.telebahiacelular.movistore.acao.value.AcaoModel)
throws javax.ejb.CreateException,java.rmi.RemoteException with arguments
com.telebahiacelular.movistore.acao.value.AcaoModel. The arguments do not match the
signature.
faultActor: null
faultNode: null
faultDetail:
Tried to invoke method public abstract
com.telebahiacelular.movistore.acao.value.AcaoPKModel
com.telebahiacelular.movistore.acao.interfaces.Acao.inserir(com.telebahiacelular.movistore.acao.value.AcaoModel)
throws javax.ejb.CreateException,java.rmi.RemoteException with arguments
com.telebahiacelular.movistore.acao.value.AcaoModel. The arguments do not match the
signature.
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:312)
at org.jboss.net.axis.server.EJBProvider.processMessage(EJBProvider.java:233)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:332)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:469)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:315)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:766)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:366)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:293)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:572)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1700)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:554)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1650)
at org.mortbay.http.HttpServer.service(HttpServer.java:894)
at org.jboss.jetty.Jetty.service(Jetty.java:497)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:966)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:204)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:504)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring
class
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:324)
at
org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:385)
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:293)
... 25 more
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Acao" provider="Handler" style="rpc" use="encoded">
<parameter name="wsdlTargetNamespace" value="urn:telebahiacelular/movistore/acao"/>
<parameter name="wsdlServiceElement" value="AcaoService"/>
<parameter name="wsdlServicePort" value="Acao"/>
<parameter name="wsdlPortType" value="Acao"/>
<!-- EJBProvider -->
<parameter name="handlerClass" value="org.jboss.net.axis.server.EJBProvider"/>
<parameter name="beanJndiName" value="movistore/Acao"/>
<parameter name="homeInterfaceName" value="com.telebahiacelular.movistore.acao.interfaces.AcaoHome"/>
<parameter name="remoteInterfaceName" value="com.telebahiacelular.movistore.acao.interfaces.Acao"/>
<parameter name="allowedMethods" value="inserir alterar excluir selecionarPorChave selecionarPorTela selecionarTodos"/>
<parameter name="scope" value="Application"/>
<typeMapping
xmlns:ns="urn:telebahiacelular/movistore/acao"
qname="ns:AcaoPKModel"
type="java:com.telebahiacelular.movistore.acao.value.AcaoPKModel"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
<typeMapping
xmlns:ns="urn:telebahiacelular/movistore/acao"
qname="ns:AcaoModel"
type="java:com.telebahiacelular.movistore.acao.value.AcaoModel"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
<typeMapping
xmlns:ns="urn:telebahiacelular/movistore/acao"
qname="ns:ArrayOf_xsd_anyType"
type="java:java.lang.Object[]"
serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
<typeMapping
xmlns:ns="urn:telebahiacelular/movistore/tela"
qname="ns:TelaPKModel"
type="java:com.telebahiacelular.movistore.tela.value.TelaPKModel"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
</service>
</deployment>
/*
* Generated by XDoclet - Do not edit!
*/
package com.telebahiacelular.movistore.acao.interfaces;
/**
* Remote interface for Acao.
*/
public interface Acao
extends javax.ejb.EJBObject
{
/**
* Altera os dados de uma acao existente.
* @param acao a acao a ser alterada.
*/
public void alterar( com.telebahiacelular.movistore.acao.value.AcaoModel acao )
throws javax.ejb.FinderException, java.rmi.RemoteException;
/**
* Remove uma acao existente.
* @param acao a chave da acao a ser removida
*/
public void excluir( com.telebahiacelular.movistore.acao.value.AcaoPKModel acao )
throws javax.ejb.RemoveException, java.rmi.RemoteException;
/**
* Insere uma nova acao no sistema.
* @param acao a acao a ser inserida.
* @returns a chave da acao que acaba de ser inserida.
*/
public com.telebahiacelular.movistore.acao.value.AcaoPKModel inserir( com.telebahiacelular.movistore.acao.value.AcaoModel acao )
throws javax.ejb.CreateException, java.rmi.RemoteException;
/**
* Seleciona uma acao a partir de sua chave.
* @param chave a chave da acao a ser selecionada
* @param factoryClass o nome da classe de uma AcaoModelFactory para transformar o VO.
* @retun um ValueObject da acao selecionada, transformada de acordo com a factory.
*/
public java.lang.Object selecionarPorChave( com.telebahiacelular.movistore.acao.value.AcaoPKModel chave,java.lang.String factoryClass )
throws javax.ejb.FinderException, java.rmi.RemoteException;
/**
* Seleciona todas as acoes de uma tela.
* @param tela a chave da tela.
* @param factoryClass o nome da classe de uma AcaoModelFactory para transformar o VO.
* @return um array de ValueObjects da acao selecionada, transformadas de acordo com a factory.
*/
public java.lang.Object[] selecionarPorTela( com.telebahiacelular.movistore.tela.value.TelaPKModel tela,java.lang.String factoryClass )
throws javax.ejb.FinderException, java.rmi.RemoteException;
/**
* Seleciona todas as acoes cadastradas.
* @param factoryClass o nome da classe de uma AcaoModelFactory para transformar o VO.
* @return um array de ValueObjects da acao selecionada, transformadas de acordo com a factory.
*/
public java.lang.Object[] selecionarTodos( java.lang.String factoryClass )
throws javax.ejb.FinderException, java.rmi.RemoteException;
}
package com.telebahiacelular.movistore.client;
import javax.xml.namespace.QName;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import com.telebahiacelular.movistore.acao.value.AcaoModel;
import com.telebahiacelular.movistore.acao.value.AcaoPKModel;
public class TesteAcaoDII
{
public static void main(String[] args) throws Exception
{
String endpoint = "http://localhost:8080/jboss-net/services/Acao";
Service service = new Service();
Call call = (Call)service.createCall();
// Type Mappings
call.registerTypeMapping(AcaoPKModel.class,
new QName("urn:telebahiacelular/movistore/acao", "AcaoPKModel"),
BeanSerializerFactory.class, BeanDeserializerFactory.class);
call.registerTypeMapping(AcaoModel.class,
new QName("urn:telebahiacelular/movistore/acao", "AcaoModel"),
BeanSerializerFactory.class, BeanDeserializerFactory.class);
/*
call.registerTypeMapping(TelaPKModel.class,
new QName("urn:telabahiacelular/movistore/acao", "TelaPKModel"),
BeanSerializerFactory.class, BeanDeserializerFactory.class);
*/
call.setTargetEndpointAddress(endpoint);
call.setOperationName(new QName("urn:telebahiacelular/movistore/acao", "inserir"));
call.setReturnClass(AcaoPKModel.class);
AcaoModel acao = new AcaoModel();
acao.setCodTela(new Integer(1));
acao.setCodUsuario(new Integer(1));
acao.setDescricao("Descricao Completa da Acao");
acao.setDescricaoResumida("Descricao Resumida");
AcaoPKModel pk = (AcaoPKModel)call.invoke(new Object[] {acao});
System.out.println("Acao inserida: " + pk);
}
}
