em um probleminha aqui estou usando um Bean onde coloco informaçoes que pego de um banco de dados...
soh que eu preciso de um array desse bean e fiz o seguinte
MeuBean mb[] = new MueBean[20];
ateh aki td bem, nao deu erro
qd entro no loop pra pegar os dados do banco ele da erro
eu to pegando da seguinte forma
mb[indice].setValor(resulset.getAlgumaCoisa());
minha duvida eh : a maneira certa de acessar metodos get e set de um array de bean eh essa?? ou tenho q fazer algo diferente??
Ps: esse tópico foi muito útil na aula de hoje! Começamos a ver Java hj, e tinhamos que instanciar um array de objs… tavamos tentando de um modo errado! Obrigado a vocês! :]
Peguei como base este topico para criar um Webservice que retorna um array de beans.
A idéia é do Webservice buscar os registros no banco de dados e retornar o array de beans para uma servlet a qual vai receber o array de beans, tratar ele e imprimir em uma jsp uma tabela contendo os registros.
public ProdutoBean[] retornaBean(String data1, String data2) {
ConexaoJDBC ofbCon = new ConexaoJDBC();
Connection conexao = null;
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
ProdutoBean[] mb = null;
try {
conexao = ofbCon.abrirConexao();
Date data1Parse = df.parse(data1);
Date data2Parse = df.parse(data2);
PreparedStatement st = conexao
.prepareStatement("select cod, produto, data_cadastro from produtos where data_compra between ? and ?");
;
st.setDate(1, new java.sql.Date(data1Parse.getTime()));
st.setDate(2, new java.sql.Date(data2Parse.getTime()));
ResultSet rs = st.executeQuery();
while (rs.next()) {
for (int i = 0; i < mb.length; i++){
mb[i].setCod(rs.getInt("cod"));
mb[i].setProduto(rs.getString("produto"));
mb[i].setDataCompra(rs.getDate("data_compra"));
}
}
}
catch (Exception e) {
System.out.println("Erro: "
+ e.getMessage());
e.printStackTrace();
} finally {
ofbCon.fecharConexao(conexao);
}
return mb;
}
}[/code]
O erro que gera é de NullPointerException, acredito que seja por que estou inicializando o array como null, porem, não sei como devo inicializar ele de forma correta para que funcione direito.
Erro:
Erro: null
java.lang.NullPointerException
at webservice.EnviaBean.retornaBean(EnviaBean.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Não sei se esta é a melhor forma de um Webservice buscar dados do banco a fim de gerar um relatório, mas foi a forma que meu professor apontou… porem ta complicado de resolver… Alguém aí pode me dar uma ajuda??