[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