Cliente WebService

4 respostas
Juliano_Pedroso_da_S

Boa tarde Pessoal.
Possuo um WebService estou testando ele por uma ferramenta chamada SOAPUI e está funcionando ou seja o WebService está OK,
mas preciso de um cliente Java para testar a comunicação e execução do método deste WebService.

Efetuei algumas pesquisas tentei implementar aqui mas não consegiu, utilizei até a tag @WebServiceRef e @WebServiceClient mas sem sucesso.
Se alguém puder dar uma dica Obrigado desde já.

Segue o código do WebService.

@Stateless
@WebService(name = "serviceEventos")
@WebContext(urlPattern = "/*", transportGuarantee = "NONE", secureWSDLAccess = false, contextRoot = "serviceEventos")
public class ServiceEventos {

	@Resource(mappedName = "java:jdbc/servicosds")
	DataSource ds;

	/**
	 * Lista os Eventos
	 * 
	 * @return JSON
	 */
	@TransactionAttribute(TransactionAttributeType.NEVER)
	@WebMethod
	public String listarEventos(Integer id, String dtInicial, String dtTermino)  {
		
		Connection con = null;
		try {
			
			con = ds.getConnection();
			CallableStatement cstmt = con
					.prepareCall("{call testes..sp_listar_eventos(?,?,?),'anymode'}");
			cstmt.setInt(1, id);
			cstmt.setString(2, dtInicial);
			cstmt.setString(3, dtTermino);

			Vector<Eventos> results = new Vector<Eventos>();
			
			ResultSet rs = cstmt.executeQuery();

			while (rs.next()) {
				.
				.
				.
			  	results.add(new Eventos(...));
			  	
			}
			rs.close();
			cstmt.close();
			
			JSONSerializer js = new JSONSerializer();
			return js.serialize(results);
		} catch (Exception sqlex) {
			...
		} finally {
			if (con != null) {
				try {
					con.close();
				} catch (SQLException ex) {
					logger.error("Erro ao fechar conexao", ex);
				}
			}
		}

		return null;
	}
}

4 Respostas

mauricioadl

prq nao usa o wsimport para gerar as classes, eh muito mais simples!!!

Juliano_Pedroso_da_S

Mauricio, utilizei o WsImport, gerou várias classes que correspondem aos métodos do webservice e gerou novamente a classe do WebService.

Mas e o cliente? Como posso utilizar estas classe geradas para testar, pode dar uma ajuda, Obrigado.
Me corrija se estiver errado.

Criei um cliente, mas quando executo ocorre o erro.

public class ClientSample {

	public static void main(String[] args) {
	        System.out.println("***********************");
	        System.out.println("Create Web Service Client...");
	        ServiceEventosService service1 = new ServiceEventosService();
	        System.out.println("Create Web Service...");
	        ServiceCurso port1 = service1.getServiceEventosPort();
	        System.out.println("Call Web Service Operation...");
	        System.out.println("Server said: " + port1.listarEventos(new Integer(22),new Integer(0),"2012-01-01"));
	        System.out.println("***********************");
	        System.out.println("Call Over!");
	}
}
Exception in thread "main" javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:404) at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:314) at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:172) at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:152) at $Proxy16.listarMensalidades(Unknown Source) at testeHom.ClientSample.main(ClientSample.java:16) Caused by: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage at javax.xml.soap.SOAPMessage.setProperty(Unknown Source) at org.jboss.ws.core.soap.SOAPMessageImpl.<init>(SOAPMessageImpl.java:83) at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:171) at org.jboss.ws.core.CommonSOAP11Binding.createMessage(CommonSOAP11Binding.java:59) at org.jboss.ws.core.CommonSOAPBinding.bindRequestMessage(CommonSOAPBinding.java:158) at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:291) at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302) ... 4 more
mauricioadl

o jeito de usar esta correto, so nao sei o motivo do erro.

Juliano_Pedroso_da_S

Lembrei que o WebService solicita um usuário e senha.

Como infrormo isso no cliente acho que pode ser isso, você sabe Mauício?

Por exemplo na ferramenta é informado.

Criado 1 de março de 2012
Ultima resposta 1 de mar. de 2012
Respostas 4
Participantes 2