[jboss-user] [JBoss Web Services Development] New message: "Help with Returning a web service client."

Alan Terriaga do-not-reply at jboss.com
Fri Feb 5 14:08:35 EST 2010


User development,

A new message was posted in the thread "Help with Returning a web service client.":

http://community.jboss.org/message/524462#524462

Author  : Alan Terriaga
Profile : http://community.jboss.org/people/alan_rocket

Message:
--------------------------------------------------------------
Hi guys Im using Axis framework and I'm getting a lot of problems with it. But the most one that Im not able to solve is this:
 
I hava an interface:
**public
** 
* 
*     public* EstabComercialVO[] consultaEstabComercial( String codigo, String nome ); 
}
 
 
And I have the class which implements.
@Remote
 
(CasEstabComercialRemote.class)
@Stateless
@WebService
 
(name = "CasEstabComercial", targetNamespace = "http://www.cas.csu.com.br/CasEstabComercial", serviceName="CasEstabComercialService", portName="CasEstabComercial")
@SOAPBinding
 
(style = SOAPBinding.Style.RPC)
public
 
 
 
private static Logger log = Logger.getLogger(CasEstabComercial.class);
 
 
 
@WebMethod(operationName="consultaEstabComercial")
 
@WebResult(name="lista" )
 
public EstabComercialVO[] consultaEstabComercial( @WebParam(name="codigo") String codigo, @WebParam(name="nome") String nome ) {
 
     BasicConfigurator.configure();
 
     EstabComercialDAO dao = 
 
new EstabComercialDAO();     List<EstabComercialVO> lista = 
 
null;     EstabComercialVO[] array = 
 
null;
 
     
     try{
 
 
          EstabComercialVO vo = new EstabComercialVO();          vo.setCodEstabelecimento( codigo );
          vo.setNomeEstabelecimento( nome );
 
          lista = dao.consultaEstabComercial(vo);
 
 
 
 
 
          int cont = 0;          array = 
 
new EstabComercialVO[lista.size()];
 
          for( EstabComercialVO voLista : lista ){               array[cont] = voLista;
               cont++;
          }
     }
 
 
     catch (DAOException e) {          e.printStackTrace();
     }
 
 
 
     return array;}
 
}
 
 
 
 class CasEstabComercial implements CasEstabComercialRemote{
 



 
 
With that I could generate the follow WSDL:
 
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="CasEstabComercialService" targetNamespace="http://www.cas.csu.com.br/CasEstabComercial" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.cas.csu.com.br/CasEstabComercial" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  <types>
    <xs:schema targetNamespace="http://www.cas.csu.com.br/CasEstabComercial" version="1.0" xmlns:tns="http://www.cas.csu.com.br/CasEstabComercial" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:complexType name="estabComercialVO">
    <xs:sequence>
     <xs:element minOccurs="0" name="cep" type="xs:string"/>
     <xs:element minOccurs="0" name="cgcEstabelecimento" type="xs:string"/>
     <xs:element minOccurs="0" name="codAdquirente" type="xs:string"/>
     <xs:element minOccurs="0" name="codBloqueio" type="xs:string"/>
     <xs:element minOccurs="0" name="codBloqueioMbs" type="xs:string"/>
     <xs:element minOccurs="0" name="codEstabelecimento" type="xs:string"/>
     <xs:element minOccurs="0" name="codRegiao" type="xs:string"/>
     <xs:element minOccurs="0" name="codStatus" type="xs:string"/>
     <xs:element minOccurs="0" name="comEndereco" type="xs:string"/>
     <xs:element minOccurs="0" name="dataUltExtracao" type="xs:string"/>
     <xs:element minOccurs="0" name="endEstabelecimento" type="xs:string"/>
     <xs:element minOccurs="0" name="extracao" type="xs:string"/>
     <xs:element minOccurs="0" name="nomeBairro" type="xs:string"/>
     <xs:element minOccurs="0" name="nomeContato" type="xs:string"/>
     <xs:element minOccurs="0" name="nomeEstabelecimento" type="xs:string"/>
     <xs:element minOccurs="0" name="numeroEndereco" type="xs:string"/>
     <xs:element minOccurs="0" name="telefone" type="xs:string"/>
    </xs:sequence>
   </xs:complexType>
   <xs:complexType final="#all" name="estabComercialVOArray">
    <xs:sequence>
     <xs:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="tns:estabComercialVO"/>
    </xs:sequence>
   </xs:complexType>
  </xs:schema>
  </types>
  <message name="CasEstabComercial_consultaEstabComercial">
    <part name="codigo" type="xsd:string">
    </part>
    <part name="nome" type="xsd:string">
    </part>
  </message>
  <message name="CasEstabComercial_consultaEstabComercialResponse">
    <part name="lista" type="tns:estabComercialVOArray">
    </part>
  </message>
  <portType name="CasEstabComercial">
    <operation name="consultaEstabComercial" parameterOrder="codigo nome">
      <input message="tns:CasEstabComercial_consultaEstabComercial">
    </input>
      <output message="tns:CasEstabComercial_consultaEstabComercialResponse">
    </output>
    </operation>
  </portType>
  <binding name="CasEstabComercialBinding" type="tns:CasEstabComercial">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="consultaEstabComercial">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal" namespace="http://www.cas.csu.com.br/CasEstabComercial"/>
      </input>
      <output>
        <soap:body use="literal" namespace="http://www.cas.csu.com.br/CasEstabComercial"/>
      </output>
    </operation>
  </binding>
  <service name="CasEstabComercialService">
    <port name="CasEstabComercial" binding="tns:CasEstabComercialBinding">
      <soap:address location="http://127.0.0.1:8080/casWS/CasEstabComercial"/>
    </port>
  </service>
</definitions>


 
 
Now the problem is when I try to call the webservice.
Follow is my client class.
 
String XSD = 
"http://www.w3.org/2001/XMLSchema";String urlService = 
 
"http://www.cas.csu.com.br/CasEstabComercial";String nameService = 
 
"CasEstabComercialService";String endPoint = 
 
http://localhost:8080/casWS/CasEstabComercial?wsdl;
 
 
 
try{     QName qname = 
 
new QName(urlService); 
     ServiceFactory serviceFactory = ServiceFactory.newInstance();
 
     javax.xml.rpc.Service service = serviceFactory.createService(qname);
 
     
     Call call = (Call) service.createCall();
     call.setTargetEndpointAddress(endPoint);
 
 
 
 
     // OPERATION
     QName operationName = new QName(urlService, "consultaEstabComercial");     call.setOperationName(operationName);
 
 
 
 
     // REQUEST
     QName qParametroString = new QName(XSD, "string");     call.addParameter(
 
"codigo", qParametroString, ParameterMode.IN );     call.addParameter(
 
"nome", qParametroString, ParameterMode.IN );
 
 
 
     // RESPONSE
     QName qReturn = new QName("http://www.cas.csu.com.br/CasEstabComercial", "estabComercialVOArray");     call.setReturnType(qReturn);
     call.setReturnQName( 
 
new QName("", "lista"));
     call.registerTypeMapping( EstabComercialVO.
 
class,                                qReturn,
 
 
                               new ArraySerializerFactory(),
 
                               new ArrayDeserializerFactory() );
 
 
     // Setting parameters
     EstabComercialVO voEntrada = 
new EstabComercialVO();     voEntrada.setCodEstabelecimento(
 
"1");     String codigo = 
 
"1";     String nome = 
 
"";
     Object[] entrada = 
 
new Object[]{ codigo, nome };
 
     EstabComercialVO[] array = (EstabComercialVO[]) call.invoke(entrada);
 
 
 
 
 
     System.out.println("SIZE: " + array.length);
}
 
catch( Exception ex ){ex.printStackTrace();
}
 
 
 

 
My service can start and execute an operatioin in my database without problems, but when comes the time to fill the response:
Now after trying many possibilites in the method "registerTypeMapping" I'm getting the follow exception:
 
 
17:07:06,858 INFO [STDOUT] 156915 [http-127.0.0.1-8080-3] DEBUG br.com.csu.casWS.test.TestIBatis - carregando arquivo sql ibatis br/com/csu/casWS/config/SqlMapConfig_casDSS.xml
17:07:07,427 INFO [STDOUT] 157487 [http-127.0.0.1-8080-3] INFO br.com.csu.casWS.service.CasEstabComercial - Consulta no banco os estabelecimentos comerciais.
17:07:07,428 INFO [STDOUT] 157488 [http-127.0.0.1-8080-3] DEBUG br.com.csu.casWS.test.TestIBatis - select na tabela estbmto
17:07:10,547 INFO [STDOUT] 160607 [http-127.0.0.1-8080-3] DEBUG com.ibatis.common.jdbc.SimpleDataSource - Created connection 5686307.
17:07:10,556 INFO [STDOUT] 160616 [http-127.0.0.1-8080-3] DEBUG java.sql.Connection - {conn-100000} Connection
17:07:10,573 INFO [STDOUT] 160633 [http-127.0.0.1-8080-3] DEBUG java.sql.Connection - {conn-100000} Preparing Statement: select COD_ADQUIRENTE, COD_ESTBMTO, COD_REGIAO, NOM_ESTBMTO, END_ESTBMTO, NUM_ENDERECO, COM_ENDERECO, NOM_BAIRRO, CEP, TEL_CONTATO, NOM_CONTATO, CGC_ESTBMTO, COD_BLOQUEIO, COD_STATUS, COD_BLOQUEIO_MBS, FLG_EXTRACAO, DAT_ULT_EXTRACAO from ESTBMTO where COD_ESTBMTO = ? 
17:07:10,631 INFO [STDOUT] 160691 [http-127.0.0.1-8080-3] DEBUG java.sql.PreparedStatement - {pstm-100001} Executing Statement: select COD_ADQUIRENTE, COD_ESTBMTO, COD_REGIAO, NOM_ESTBMTO, END_ESTBMTO, NUM_ENDERECO, COM_ENDERECO, NOM_BAIRRO, CEP, TEL_CONTATO, NOM_CONTATO, CGC_ESTBMTO, COD_BLOQUEIO, COD_STATUS, COD_BLOQUEIO_MBS, FLG_EXTRACAO, DAT_ULT_EXTRACAO from ESTBMTO where COD_ESTBMTO = ? 
17:07:10,631 INFO [STDOUT] 160691 [http-127.0.0.1-8080-3] DEBUG java.sql.PreparedStatement - {pstm-100001} Parameters: [1]
17:07:10,631 INFO [STDOUT] 160691 [http-127.0.0.1-8080-3] DEBUG java.sql.PreparedStatement - {pstm-100001} Types: [java.lang.String]
17:07:10,638 INFO [STDOUT] 160698 [http-127.0.0.1-8080-3] DEBUG java.sql.ResultSet - {rset-100002} ResultSet
17:07:10,650 INFO [STDOUT] 160710 [http-127.0.0.1-8080-3] DEBUG java.sql.ResultSet - {rset-100002} Header: [COD_ADQUIRENTE, COD_ESTBMTO, COD_REGIAO, NOM_ESTBMTO, END_ESTBMTO, NUM_ENDERECO, COM_ENDERECO, NOM_BAIRRO, CEP, TEL_CONTATO, NOM_CONTATO, CGC_ESTBMTO, COD_BLOQUEIO, COD_STATUS, COD_BLOQUEIO_MBS, FLG_EXTRACAO, DAT_ULT_EXTRACAO]
17:07:10,651 INFO [STDOUT] 160710 [http-127.0.0.1-8080-3] DEBUG java.sql.ResultSet - {rset-100002} Result: [1, 1, 7627, teste loja 1, endereco 1, 1, comp 1, bairro 1, 11111111, 1112345678, contato 1, cgc 1, null, 1, null, null, null]
17:07:10,659 INFO [STDOUT] 160718 [http-127.0.0.1-8080-3] DEBUG com.ibatis.common.jdbc.SimpleDataSource - Returned connection 5686307 to pool.
17:07:10,845 ERROR [Call] Exception:
org.xml.sax.SAXException
 
 
SimpleDeserializer.java:145)at org.apache.axis.encoding.DeserializationContext.startElement(
 
DeserializationContext.java:1035)at org.apache.axis.message.SAX2EventRecorder.replay(
 
SAX2EventRecorder.java:165)at org.apache.axis.message.MessageElement.publishToHandler(
 
MessageElement.java:1141)at org.apache.axis.message.RPCElement.deserialize(
 
RPCElement.java:236)at org.apache.axis.message.RPCElement.getParams(
 
RPCElement.java:384)at org.apache.axis.client.Call.invoke(
 
Call.java:2467)at org.apache.axis.client.Call.invoke(
 
Call.java:2366)at org.apache.axis.client.Call.invoke(
 
Call.java:1812)at br.com.csu.cas.presentation.action.cadastros.EstabComercialAction.teste(
 
EstabComercialAction.java:127)at br.com.csu.cas.presentation.action.cadastros.EstabComercialAction.consulta(
 
EstabComercialAction.java:62)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:597)at org.apache.struts.actions.DispatchAction.dispatchMethod(
 
DispatchAction.java:276)at org.apache.struts.actions.DispatchAction.execute(
 
DispatchAction.java:196)at org.apache.struts.action.RequestProcessor.processActionPerform(
 
RequestProcessor.java:421)at org.apache.struts.action.RequestProcessor.process(
 
RequestProcessor.java:226)at org.apache.struts.action.ActionServlet.process(
 
ActionServlet.java:1164)at org.apache.struts.action.ActionServlet.doGet(
 
ActionServlet.java:397)at javax.servlet.http.HttpServlet.service(
 
HttpServlet.java:617)at javax.servlet.http.HttpServlet.service(
 
HttpServlet.java:717)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
 
ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(
 
ApplicationFilterChain.java:206)at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(
 
ReplyHeaderFilter.java:96)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
 
ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(
 
ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(
 
StandardWrapperValve.java:235)at org.apache.catalina.core.StandardContextValve.invoke(
 
StandardContextValve.java:191)at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(
 
SecurityAssociationValve.java:190)at org.jboss.web.tomcat.security.JaccContextValve.invoke(
 
JaccContextValve.java:92)at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(
 
SecurityContextEstablishmentValve.java:126)at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(
 
SecurityContextEstablishmentValve.java:70)at org.apache.catalina.core.StandardHostValve.invoke(
 
StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(
 
ErrorReportValve.java:102)at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(
 
CachedConnectionValve.java:158)at org.apache.catalina.core.StandardEngineValve.invoke(
 
StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(
 
CoyoteAdapter.java:330)at org.apache.coyote.http11.Http11Processor.process(
 
Http11Processor.java:829)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
 
Http11Protocol.java:598)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(
 
JIoEndpoint.java:447)at java.lang.Thread.run(
 
Thread.java:619)17:07:10,855 ERROR [STDERR] AxisFault
faultCode: {
 
http://schemas.xmlsoap.org/soap/envelope/}Server.userExceptionfaultSubcode: 
faultString: 
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.faultActor: 
faultNode: 
faultDetail: 
 
 
 
 
: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(

 
 
Please I'd like to know what it's going on, or maybe there is other framework better than Axis to create WebServices in my JBoss 4.0.5.
 
Thanks in advance.
 
Alan
* *interface* CasEstabComercialRemote *extends* Remote { 
 

--------------------------------------------------------------

To reply to this message visit the message page: http://community.jboss.org/message/524462#524462




More information about the jboss-user mailing list