Jump to content

Recommended Posts

Posted (edited)

Boas malta,

Estou a construir um web service que irá fazer uma ligação a uma base de dados e que posteriormente vai sacar dados dessa base de dados, acontece que cheguei a um ponto que quero mostrar todos os dados de uma determinada tabela, consigo pesquisar um valor, consigo inserir, mas quando se trata de mostrar todos como sou um pouco verde em java não estou a conseguir. Como não existe parâmetros de entrada o valor de saída é void.

Acontece que consigo mostrar no output do java os parâmetros que escolhi, mas não consigo mostrar na saída (return) do web service propriamente dito.

Se não perceberem alguma coisa não hesitem em perguntar.

Alguma dica?

Screenshot_2014_07_07_09_17_37.png

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.naming.InitialContext;
import javax.sql.DataSource;
/**
*
* @author JoaoMartins
*/
@WebService(serviceName = "ConsumosSobressalentes_ShowAll")
@SOAPBinding
(
  style = SOAPBinding.Style.RPC,
  use = SOAPBinding.Use.LITERAL,
  parameterStyle = SOAPBinding.ParameterStyle.WRAPPED
)
public class ConsumosSobressalentes_ShowAll {

public class OTs {
	public String WWONBR = "";
	public int WSTAT = 0;
	public int WRQDTE = 0;
	public String WPDESC ="";
	public int WPLNNR = 0;
	public String WMCHID = "";
}
/**
 * This is a sample web service operation
 */
@WebMethod(operationName = "show_all")
@WebResult(name="query_result")
public void show_all() {

	 try{

//LIGACAO BASE DE DADOS

  InitialContext ctx = new InitialContext();
  //The JDBC Data source that we just created
  DataSource ds = (DataSource) ctx.lookup("MySQLDataSource");
  Connection conn = ds.getConnection();

//QUERY NA TABELA
  String query = "SELECT WWONBR, WSTAT, WRQDTE, WPDESC, WPLNNR, WMCHID FROM EWSMST00";
  // create the java statement
   PreparedStatement st = conn.prepareStatement(query);
  ResultSet rs = st.executeQuery();

//RETORNO DOS VALORES NO OUTPUT DO JAVA	  
	List<OTs> returnOtData= new ArrayList<OTs>();
	while (rs.next()) {
			OTs otdata = new OTs();
		   otdata.WWONBR = rs.getString("WWONBR");
		   otdata.WSTAT  = rs.getInt("WSTAT");
		   otdata.WRQDTE = rs.getInt("WRQDTE");
		   otdata.WPDESC = rs.getString("WPDESC");
		   otdata.WPLNNR = rs.getInt("WPLNNR");
		   otdata.WMCHID = rs.getString("WMCHID");
		   returnOtData.add(otdata);

	  System.out.println("||----------------------------------||");
	  System.out.println("WWONBR (Número): " + otdata.WWONBR);
	  System.out.println("WSTAT (Estado): " +  otdata.WSTAT);
	  System.out.println("WRQDTE (Data de Abertura): " +  otdata.WRQDTE );
	  System.out.println("WPDESC (Descrição): " +  otdata.WPDESC);
	  System.out.println("WPLNNR (Planificador): " +  otdata.WPLNNR);
	  System.out.println("WMCHID (Equipamento):" +  otdata.WMCHID);
	  System.out.println("||----------------------------------||");
}
	System.out.println("Pesquisa Completa!!");

	}catch(Exception ex){


	System.err.println(ex.getMessage());
	System.out.println("Erro Inesperado");

	}




}
}

Este web service irá ser chamado numa aplicação C#, existe possibilidade de mostrar estes parâmetros sem ser com o valor do return e apenas com o output do java como está na imagem?

Obrigado

Edited by JoaoVM
Posted (edited)

Antes de mais, "Como não existe parâmetros de entrada o valor de saída é void." é uma afirmação errada.

O facto de uma função/método ser void não tem nada a ver com o facto de ter, ou não, parametros de entrada, são coisas exclusivas.

Se queres ver a invocação do WS, faz log para um ficheiro. Cada vez que o mesmo é invocado escreves nesse ficheiro a informação que necessitas.

Tipicamente o retorno do que pretendes é, no final fazer

return returnOtData;

Mas tens de mudar a assinatura para, em vez de retornar void, retornar

List<OTs>

Obviamente estou a partir do principio que isso está de acordo com a especificação do WS dado que não publicaste mais nada...

Edited by M6
PS
10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted

Desde já obrigado pela resposta M6.

Como disse ainda sou um pouco verde em java sei que não tem nada a ver mas se disser baboseiras como essa peço desculpa, estamos sempre a aprender 😉

Basicamente cheguei a solução como disseste, acrescentei algumas coisas que encontrei também.

Pronto, fica a solução:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.naming.InitialContext;
import javax.sql.DataSource;
/**
*
* @author JoaoMartins
*/
@WebService(serviceName = "OtsConsumosSobressalentes")
public class OtsConsumosSobressalentes {
/*----------------------------------------------------------------------------*/   

/*--------------------------------------------------*/
/*--METODO PARA MOSTRAR TODAS AS OTS DA TABELA OTS--*/
/*--------------------------------------------------*/
   @WebMethod(operationName = "select_all")
   @WebResult(name = "select_all")
   public OTs[] getSelect_all() {

   Collection<OTs> returnOtData_all = new ArrayList<OTs>();

    try{
	  InitialContext ctx = new InitialContext();
	  //The JDBC Data source that we just created
	  DataSource ds = (DataSource) ctx.lookup("MySQLDataSource");
	  Connection conn = ds.getConnection();

	  String mostra_ots_query = "SELECT WWONBR, WSTAT, WRQDTE, WPDESC, WPLNNR, WMCHID FROM EWSMST00";
	  // create the java statement
	  PreparedStatement st = conn.prepareStatement(mostra_ots_query);
	  ResultSet rs = st.executeQuery();
	    while (rs.next()) {
			   OTs otdata = new OTs();
			   otdata.setWWONBR(rs.getString("WWONBR"));
			   otdata.setWSTAT(rs.getInt("WSTAT"));
			   otdata.setWRQDTE(rs.getInt("WRQDTE"));
			   otdata.setWPDESC(rs.getString("WPDESC"));
			   otdata.setWPLNNR(rs.getInt("WPLNNR"));
			   otdata.setWMCHID(rs.getString("WMCHID"));
			   returnOtData_all.add(otdata);
	    }
	    System.out.println("Pesquisa Completa!!");
    }catch(Exception ex){
	    System.err.println(ex.getMessage());
	    System.out.println("Erro Inesperado");
    }

    return returnOtData_all.toArray(new OTs[0]);
   }
}

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.