Bom dia, pessoal.
Tenho a seguinte classe que gostaria de publicar:
@WebService(serviceName=“VwCadastroPessoalCompletoService”)
public class VwCadastroPessoalCompletoService {
@WebMethod
@SuppressWarnings("unchecked")
public List<VwCadastroPessoalCompleto> findAll() throws RemoteException {
try {
StringBuffer bufferedReader = new HttpStubConnector("http://localhost:8080/beethoven/").doGet("vwcadastropessoalcompleto.findAll.xml.logic");
XStream xstream = new XStream();
xstream.alias("VwCadastroPessoalCompleto", VwCadastroPessoalCompleto.class);
Map<String, List<VwCadastroPessoalCompleto>> mapEntry = (Map<String, List<VwCadastroPessoalCompleto>>)xstream.fromXML(bufferedReader.toString());
return mapEntry.get("vwCadastroPessoalCompletoList");
}
catch (Exception e) {
throw new RemoteException(e.getMessage(), e.getCause());
}
}
O método está funcionando belezinha e está publicando o seguinte wsdl:
</xs:sequence>
</xs:complexType>
<xs:complexType name=‘vwCadastroPessoalCompleto’>
xs:sequence
<xs:element minOccurs=‘0’ name=‘andar’ type=‘xs:string’/>
<xs:element minOccurs=‘0’ name=‘apto’ type=‘xs:string’/>
<xs:element minOccurs=‘0’ name=‘bairro’ type=‘xs:string’/>
<xs:element minOccurs=‘0’ name=‘cbo’ type=‘xs:string’/>
<xs:element minOccurs=‘0’ name=‘ccustoDefault’ type=‘xs:string’/>
<xs:element minOccurs='0' name='ccustoResp' type='xs:string'/>
<xs:element minOccurs='0' name='cep' type='xs:string'/>
<xs:element minOccurs='0' name='chapa' type='xs:int'/>
<xs:element minOccurs='0' name='cidade' type='xs:string'/>
<xs:element minOccurs='0' name='cpf' type='xs:string'/>
<xs:element minOccurs='0' name='ctps' type='xs:string'/>
<xs:element minOccurs='0' name='dtDeslig' type='xs:dateTime'/>
<xs:element minOccurs='0' name='dtEfetivacao' type='xs:dateTime'/>
<xs:element minOccurs='0' name='dtNasc' type='xs:dateTime'/>
<xs:element minOccurs='0' name='empresa' type='xs:short'/>
<xs:element minOccurs='0' name='estado' type='xs:string'/>
<xs:element minOccurs='0' name='estadoCivil' type='xs:string'/>
<xs:element minOccurs='0' name='funcaoCod' type='xs:int'/>
<xs:element minOccurs='0' name='funcaoDesc' type='xs:string'/>
<xs:element minOccurs='0' name='idLugar' type='xs:short'/>
<xs:element minOccurs='0' name='inativo' type='xs:byte'/>
<xs:element minOccurs='0' name='lugar' type='xs:string'/>
<xs:element minOccurs='0' name='nome' type='xs:string'/>
<xs:element minOccurs='0' name='nro' type='xs:int'/>
<xs:element minOccurs='0' name='pais' type='xs:string'/>
<xs:element minOccurs='0' name='pepDefault' type='xs:string'/>
<xs:element minOccurs='0' name='pepResp' type='xs:string'/>
<xs:element minOccurs='0' name='pis' type='xs:string'/>
<xs:element minOccurs='0' name='rg' type='xs:string'/>
<xs:element minOccurs='0' name='rua' type='xs:string'/>
<xs:element minOccurs='0' name='sexo' type='xs:string'/>
<xs:element minOccurs='0' name='situacao' type='xs:string'/>
<xs:element minOccurs='0' name='tel' type='xs:string'/>
<xs:element minOccurs='0' name='usuarioId' type='xs:int'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
O problema está na hora de consumir… (tanto em .Net como em JAVA)
Na hora de criar o stub, o método findAll() que a princípio não tinha parametros, está pedindo um parâmetro cujo tipo é o mesmo nome do método)
Porque isso acontece?
Eis um exemplo de um testCase que faz a chamada do método.
public class VwCadastroPessoalCompletoServiceTest extends junit.framework.TestCase{
/**
* Auto generated test method
*/
public void testfindAll() throws java.lang.Exception{
com.techint.db.beethoven.logic.VwCadastroPessoalCompletoServiceStub stub =
new com.techint.db.beethoven.logic.VwCadastroPessoalCompletoServiceStub();//the default implementation should point to the right endpoint
com.techint.db.beethoven.logic.VwCadastroPessoalCompletoServiceStub.FindAll5 findAll4=
(com.techint.db.beethoven.logic.VwCadastroPessoalCompletoServiceStub.FindAll5)getTestObject(com.techint.db.beethoven.logic.VwCadastroPessoalCompletoServiceStub.FindAll5.class);
// TODO : Fill in the findAll4 here
assertNotNull(stub.findAll(
findAll4));
}
//Create an ADBBean and provide it as the test object
public org.apache.axis2.databinding.ADBBean getTestObject(java.lang.Class type) throws Exception{
return (org.apache.axis2.databinding.ADBBean) type.newInstance();
}
}
Outro exemplo de chama em C#
private void Form1_Load(object sender, EventArgs e)
{
tbrptbrfva.VwCadastroPessoalCompletoService stub = new tbrptbrfva.VwCadastroPessoalCompletoService();
tbrptbrfva.findAll findAll = new tbrptbrfva.findAll();
tbrptbrfva.vwCadastroPessoalCompleto[] list = stub.findAll(findAll);
}
Espero ter sido claro.
Abraços