Bom dia pessoal, estou tendo problemas ao tentar fazer o upload de três arquivos para que sejam incluídos no banco de dados(ORACLE). Estou utilizando a conexão JDBC. Eu abro somente uma conexão JDBC para aramazenar os três arquivos no banco, e executo a partir do IF(abaixo), o procedimento 3 vezes. O método no qual ele insere no banco definitivamente é o mIncluiArquivos. Já percebi q o problema é q ele não consegue dar o commit pros 3 procedimentos seguidamente, mesmo abrindo e fechando a conexão nas 3 vezes em q vou inserir os arquivos. Alguém saberia me explicar?! Muito Obrigado desde já…
Ahn, e o que faz essa rotina?
aClsArquivos.mIncluiArquivos()
(off-topic: deve ser algum cara viciado em “notação húngara” que inventou esse nome para o seu método “mIncluiArquivos”. É claro que isso é um método, porque é que tem de pôr a letra “m” para indicar que isso é um método? A notação húngara é perfeita para o C onde você pode escrever algo como aClsArquivos.mIncluiArquivos; e o compilador não reclama de você ter esquecido os parênteses, e concordo que é boa para o uso em programação de GUIs, onde é interessante pôr o nome de btnOK para uma variável JButton que representa o botão OK, mas não é a tradição Java.)
EDITADO - Agora estou vendo, a notação húngara infestou o seu programa; na tradição Java nunca se põe “Cls” alguma coisa para indicar que o identificador representa uma classe. É suficiente que a primeira letra seja maiúscula.
Isso aí smota. Os três arquivos vêm de uma página JSP do tipo <input=“file”>. Guardo-os num tipo FileItem (estou usando o pacote org.apache.commons.fileupload.FileItem) - e depois insiro-os no banco com o método mIncluiArquivos. Já tentei colocar akele setAutoCommit(false); mas qnd resolvo dar o commit(); ele dá erro. Se eu não usar o setAutoCommit(false);, ele vai commitando a cada vez q ele chama o método mIncluiArquivos, porém, já na segunda execução desse método, dá erro, e acho q provavelmente deve ser o commit();
[code][24/02/05 10:14:09:114 GMT-03:00] 74e774e7 ConnectionEve A J2CA0056I: O Gerenciador de Conexões recebeu um erro de conexão fatal do Adaptador de Recursos para o recurso jdbc/thinORADE. A exceção que foi recebida é com.ibm.websphere.ce.cm.StaleConnectionException: Exceção de E/S: Connection aborted by peer: socket write error
[24/02/05 10:14:36:971 GMT-03:00] 74e774e7 SystemOut O Não existe conexão de banco de dados ativa para o comando.
[24/02/05 10:14:42:533 GMT-03:00] 74e774e7 WebGroup I SRVE0180I: [RoyalWeb] [/] [Servlet.LOG]: /html/jsp/aviso.jsp: init
[24/02/05 10:14:43:799 GMT-03:00] 74e774e7 StaleConnecti A CONM7007I: Mapeando a seguinte SQLException, com ErrorCode 17.002 e SQLState <null>, para uma StaleConnectionException: java.sql.SQLException: Exceção de E/S: Connection aborted by peer: socket write error
at java.lang.Throwable.<init>(Throwable.java:54)
at java.lang.Throwable.<init>(Throwable.java:68)
at java.sql.SQLException.<init>(SQLException.java:51)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:211)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:324)
at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:889)
at com.ibm.ws.rsadapter.spi.WSRdbSpiLocalTransactionImpl.rollback(WSRdbSpiLocalTransactionImpl.java:368)
at com.ibm.ejs.j2c.LocalTransactionWrapper.rollback(LocalTransactionWrapper.java:310)
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java:878)
at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java:208)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:673)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:114)
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:610)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
[24/02/05 10:14:44:143 GMT-03:00] 74e774e7 LocalTransact E WLTC0016E: Falha ao concluir o Recurso jdbc/thinORADE. O rastreio da pilha de exceção é: javax.transaction.xa.XAException: rollback() received an Exception: com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: Exceção de E/S: Connection aborted by peer: socket write error.
at java.lang.Throwable.<init>(Throwable.java:54)
at java.lang.Throwable.<init>(Throwable.java:68)
at javax.transaction.xa.XAException.<init>(XAException.java:44)
at com.ibm.ejs.j2c.LocalTransactionWrapper.rollback(LocalTransactionWrapper.java:333)
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java:878)
at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java:208)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:673)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:114)
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:610)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
.
[24/02/05 10:14:44:174 GMT-03:00] 74e774e7 TraceNLS u No message text associated with key InconsistentLocalTranException in bundle com.ibm.ejs.resources.seriousMessages
[24/02/05 10:14:44:174 GMT-03:00] 74e774e7 WebAppTransac E InconsistentLocalTranException[/code]
Aki são usadas 3 camadas. Essa é a mais importante, pois onde seto o PreparedStatement e o executo.
[code] public void mIncluiArquivos(ClsParamBdArquivos aClsParamBdArquivos) throws Throwable {
Você não tá com algum problema na sua rede não? O segundo arquivo que vc está inserindo é muito grande ou coisa assim? (troque a ordem pra testar)
Nunca usei o FileUpload, então uma dúvida: a essa altura do campeonato os arquivos estão gravados no filesystem? Se não estiverem faça um teste rápido, grave-os no disco e veja se foram salvos corretamente.
Desculpe, mas vou dar uma procurada e ver como faço para gravá-los no disco, pois sou iniciante e não tenho essa noção ainda… Se for simples e tiver como me passar, fico grato.