JoaoVM Posted July 4, 2014 at 01:05 PM Report #561512 Posted July 4, 2014 at 01:05 PM (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? 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 July 7, 2014 at 08:21 AM by JoaoVM
M6 Posted July 8, 2014 at 04:34 PM Report #561897 Posted July 8, 2014 at 04:34 PM (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 July 8, 2014 at 04:35 PM 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."
JoaoVM Posted July 9, 2014 at 08:11 AM Author Report #561973 Posted July 9, 2014 at 08:11 AM 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]); } }
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now