Hello again, folks. Here is the second problem I'm having while trying
to access a Stateless Session Bean as a web service using JBoss and
Axis. I hope your MUA can show this message in the same thread as my
previous message.

Here is the problem: after being able to generate the WSDL for the
service (thanks to Cédric Chabanois for the helping me), I tried to
write a DII client to invoke the service. However, something goes wrong
again and all I get is an AxisFault. Attached goes:

1) The full stack trace;
2) The WSDL (generated by axis using ?wsdl) for the service;
3) The Service interface (an EJB remote interface);
4) The DII client source code.

I'm willing to provide any further information. I've seen that the axis
generate a lot of logging information during the call. I haven't
included it here due it's sheer volume (aronud ~60k for just a single
call), but I could provide it if needed.

--
Pazu <[EMAIL PROTECTED]>
AxisFault
 faultCode: {http://www.w3.org/2002/06/soap-envelope}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: Bad types (class 
com.telebahiacelular.movistore.acao.value.AcaoModel -> class 
com.telebahiacelular.movistore.acao.value.AcaoModel)
 faultActor: null
 faultNode: null
 faultDetail: 
        stackTrace: org.xml.sax.SAXException: Bad types (class 
com.telebahiacelular.movistore.acao.value.AcaoModel -&gt; class 
com.telebahiacelular.movistore.acao.value.AcaoModel)
        at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:302)
        at 
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:912)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
        at 
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:693)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:220)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:296)
        at 
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:191)
        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)


org.xml.sax.SAXException: Bad types (class 
com.telebahiacelular.movistore.acao.value.AcaoModel -> class 
com.telebahiacelular.movistore.acao.value.AcaoModel)
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:127)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:336)
        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: org.xml.sax.SAXException: Bad types (class 
com.telebahiacelular.movistore.acao.value.AcaoModel -> class 
com.telebahiacelular.movistore.acao.value.AcaoModel)
        at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:302)
        at 
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:912)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
        at 
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:693)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:220)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:296)
        at 
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:191)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:332)
        ... 23 more
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:telebahiacelular/movistore/acao" 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
xmlns:impl="urn:telebahiacelular/movistore/acao" 
xmlns:intf="urn:telebahiacelular/movistore/acao" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:tns1="http://value.acao.movistore.telebahiacelular.com"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";><wsdl:types><schema 
targetNamespace="http://value.acao.movistore.telebahiacelular.com"; 
xmlns="http://www.w3.org/2001/XMLSchema";><import 
namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType 
name="AcaoPKModel"><sequence><element name="codigo" nillable="true" 
type="xsd:int"/></sequence></complexType><complexType 
name="AcaoModel"><complexContent><extension base="tns1:AcaoPKModel"><sequence><element 
name="codTela" nillable="true" type="xsd:int"/><element name="codUsuario" 
nillable="true" type="xsd:int"/><element name="descricao" nillable="true" 
type="xsd:string"/><element name="descricaoResumida" nillable="true" 
type="xsd:string"/></sequence></extension></complexContent></complexType></schema></wsdl:types>

  <wsdl:message name="inserirResponse">
    <wsdl:part name="inserirReturn" type="tns1:AcaoPKModel"/>
  </wsdl:message>
  <wsdl:message name="inserirRequest">
    <wsdl:part name="in0" type="tns1:AcaoModel"/>
  </wsdl:message>
  <wsdl:portType name="Acao">
    <wsdl:operation name="inserir" parameterOrder="in0">

      <wsdl:input message="impl:inserirRequest" name="inserirRequest"/>
      <wsdl:output message="impl:inserirResponse" name="inserirResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="AcaoSoapBinding" type="impl:Acao">
    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="inserir">
      <wsdlsoap:operation soapAction=""/>
      <wsdl:input name="inserirRequest">

        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:telebahiacelular/movistore/acao" use="encoded"/>
      </wsdl:input>
      <wsdl:output name="inserirResponse">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:telebahiacelular/movistore/acao" use="encoded"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="AcaoService">
    <wsdl:port binding="impl:AcaoSoapBinding" name="Acao">

      <wsdlsoap:address location="http://localhost:8080/jboss-net/services/Acao"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
/*
 * 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;
import com.telebahiacelular.movistore.tela.value.TelaPKModel;

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("http://value.acao.movistore.telebahiacelular.com";, "AcaoPKModel"),
                BeanSerializerFactory.class, BeanDeserializerFactory.class);
        call.registerTypeMapping(AcaoModel.class,
                new QName("http://value.acao.movistore.telebahiacelular.com";, "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);
    }
}

Reply via email to