Consumir serviço

0 respostas
leoviniga

Olá pessoas...tô com um probleminha aqui...tenho um Data "CEP" com os Métodos de pesquisarEstado e pesquisarCidade...

Cidade tem os atributos nome,codigo,estado
e estado tem nome,uf,codigo

quando um usuário faz uma pesquisa em Cidade ele automaticamente preenche o Objeto estado fazendo pesquisarEstado e aí vem o problema...ele só está fazendo pesquisarEstado a primeira vez...na segunda ele dá timeout na linha
OMElement result = sender.sendReceive(payload);
meu código:
public Estado[] pesquisarEstado(Estado estado) {
				EndpointReference endPoint = new EndpointReference(
				"EndPointAqui");
		String nameSpace = "NameSpaceAqui";
		String nomeMetodo = "pesquisarEstado";

		List<Estado> lst = new ArrayList<Estado>();

		try {
			Options options = new Options();
			options.setTo(endPoint);
			options.setAction("urn:" + nomeMetodo);

			ServiceClient sender = new ServiceClient();
			sender.setOptions(options);

			OMFactory fac = OMAbstractFactory.getOMFactory();
			OMNamespace omNs = fac.createOMNamespace(nameSpace, nomeMetodo);
			OMNamespace xsi = fac.createOMNamespace(
					Constants.URI_DEFAULT_SCHEMA_XSI,
					Constants.NS_PREFIX_SCHEMA_XSI);

			OMElement payload = fac.createOMElement(nomeMetodo, omNs);

			OMElement param = fac.createOMElement("codigo", omNs);
			if (estado.getCodigo() != null) {
				param.setText(estado.getCodigo().toString());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}

			param = fac.createOMElement("uf", omNs);
			if (estado.getUf() != null) {
				param.setText(estado.getUf());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}

			param = fac.createOMElement("descricao", omNs);
			if (estado.getNome() != null) {
				param.setText(estado.getNome());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}
			OMElement result = sender.sendReceive(payload);

			Iterator rows = result.getChildElements();
			while (rows.hasNext()) {
				OMElement row = (OMElement) rows.next();
				OMElement codigo = row.getFirstChildWithName(new QName(omNs
						.getNamespaceURI(), "codigo"));
				OMElement uf = row.getFirstChildWithName(new QName(omNs
						.getNamespaceURI(), "uf"));
				OMElement nome = row.getFirstChildWithName(new QName(omNs
						.getNamespaceURI(), "descricao"));

				Estado est = new Estado();
				est.setCodigo(Integer.parseInt(codigo.getText()));
				est.setNome(nome.getText());
				est.setUf(uf.getText());

				lst.add(est);
			}
		} catch (Exception ex) {
			throw new RuntimeException(ex.getMessage());
		}
		if (lst.size() > 0)
			return lst.toArray(new Estado[lst.size() - 1]);
		else
			return lst.toArray(new Estado[0]);
	}

	public Cidade[] pesquisarCidade(Cidade cidade) {
		EndpointReference endPoint = new EndpointReference(
				"EndPointAqui");
		String nameSpace = "NameSpaceAqui";
		String nomeMetodo = "pesquisarCidade";

		List<Cidade> lst = new ArrayList<Cidade>();

		try {
			Options options = new Options();
			options.setTo(endPoint);
			options.setAction("urn:" + nomeMetodo);

			ServiceClient sender = new ServiceClient();
			sender.setOptions(options);

			OMFactory fac = OMAbstractFactory.getOMFactory();
			OMNamespace omNs = fac.createOMNamespace(nameSpace, nomeMetodo);
			OMNamespace xsi = fac.createOMNamespace(
					Constants.URI_DEFAULT_SCHEMA_XSI,
					Constants.NS_PREFIX_SCHEMA_XSI);

			OMElement payload = fac.createOMElement(nomeMetodo, omNs);

			OMElement param = fac.createOMElement("codigo", omNs);
			if (cidade.getCodigo() != null) {
				param.setText(cidade.getCodigo().toString());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}

			param = fac.createOMElement("codigoEstado", omNs);
			if (cidade.getEstado().getCodigo() != null) {
				param.setText(cidade.getEstado().getCodigo().toString());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}

			param = fac.createOMElement("descricao", omNs);
			if (cidade.getNome() != null) {
				param.setText(cidade.getNome());
				payload.addChild(param);
			} else {
				param.addAttribute(fac.createOMAttribute("nil", xsi, "true"));
				payload.addChild(param);
			}
			OMElement result = sender.sendReceive(payload);

			Iterator rows = result.getChildElements();
			while (rows.hasNext()) {
				OMElement row = (OMElement) rows.next();
				OMElement codigo = row.getFirstChildWithName(new QName(omNs
						.getNamespaceURI(), "codigo"));
				OMElement codigoEstado = row.getFirstChildWithName(new QName(
						omNs.getNamespaceURI(), "codigoEstado"));
				OMElement nome = row.getFirstChildWithName(new QName(omNs
						.getNamespaceURI(), "descricao"));
				
				Estado est = new Estado();
				est.setCodigo(Integer.parseInt(codigoEstado.getText()));

				Cidade cid = new Cidade();
				
				cid.setCodigo(Integer.parseInt(codigo.getText()));
				cid.setNome(nome.getText());
				cid.setEstado(est);

				lst.add(cid);
			}
		} catch (Exception ex) {
			throw new RuntimeException(ex.getMessage());
		}
		if (lst.size() > 0)
			return lst.toArray(new Cidade[lst.size() - 1]);
		else
			return lst.toArray(new Cidade[0]);
	}
Desculpe se o erro for algo amador ^^ esse é meu primeiro serviço... Agradeço a ajuda de todos
Criado 1 de março de 2011
Respostas 0
Participantes 1