+tomcat 5.5.23 +Spring +Oracle "java.sql.SQLException: ORA-01722: número no válido"

Enviado por william.diaz el Mié, 2026-01-09 13:30.

Buenas tardes a todos.

Tengo Una aplicación web desarrollada con MyFaces, Spring, Oracle 10g, Tomcat 5.5.23.

Tengo los siguientes servidores:

- Oracle 10g, en Linux RedHat ES 4.

- Tomcat 5.5.23, en Windows 2003 server. (tomcat8090)

- Otro Tomcat 5.5.23, en Linux RedHat ES 4 (tomcat8091).

 

El problema:

En la Base de datos de oracle se manejan Pakages con la logica del negocio del sistema.

Cuando se establece una conexión desde el tomcat8091 a la Base de datos, se realiza el llamado a un pakage, todo funciona perfecto.

Cuando se establece una conexión desde el tomcat8090 a la Base de datos, se realiza el llamado a un pakage, pero genera el siguiente error:

2026-01-09 10:16:41,687 DEBUG FacturaDAOJdbcImpl:717 - ingresó a generarFactura
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[0] = un_ano - 4 - 2007
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[1] = un_mes - 4 - 12
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[2] = un_ciclo - 4 - 32
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[3] = un_secuencia_inicial - 4 - 59518
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[4] = un_secuencia_final - 4 - 59518
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:58 - sqlParameter[5] = un_entrega - 12 - I
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:156 - Compiled stored procedure. Call string is [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:310 - RdbmsOperation with SQL [pk_reporte_factura.generar_factura] compiled
2026-01-09 10:16:44,015  INFO XmlBeanDefinitionReader:163 - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
2026-01-09 10:16:44,062  INFO XmlBeanDefinitionReader:163 - Loading XML bean definitions from class path resource [sql-error-codes.xml]
2026-01-09 10:16:44,078  INFO DefaultListableBeanFactory:332 - Overriding bean definition for bean 'Oracle': replacing [Root bean: class [org.springframework.jdbc.support.SQLErrorCodes]; abstract=false; singleton=true; lazyInit=false; autowire=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [org/springframework/jdbc/support/sql-error-codes.xml]] with [Root bean: class [org.springframework.jdbc.support.SQLErrorCodes]; abstract=false; singleton=true; lazyInit=false; autowire=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [sql-error-codes.xml]]
2026-01-09 10:16:44,078  INFO SQLErrorCodesFactory:115 - Found custom sql-error-codes.xml file at the root of the classpath
2026-01-09 10:16:44,171  INFO SQLErrorCodesFactory:121 - SQLErrorCodes loaded: [DB2, HSQL, MS-SQL, MySQL, Oracle, Informix, PostgreSQL, Sybase]
2026-01-09 10:16:44,234 ERROR FacturacionServiceImpl:330 - Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
    at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
    at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
    at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:857)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:822)
    at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:855)
    at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:112)
    at co.com.ebsa.siec.model.util.StoredProcedureGlobal.execute(StoredProcedureGlobal.java:90)
    at co.com.ebsa.siec.model.dao.jdbc.FacturaDAOJdbcImpl.generarFactura(FacturaDAOJdbcImpl.java:733)
    at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:314)
    at co.com.ebsa.siec.view.solicitud.bean.ReporteFacturaBean.verReporteFacturaReliquidacion(ReporteFacturaBean.java:60)
    at co.com.ebsa.siec.view.utilitarios.bean.ListarFacturaBean.imprimirFacturaAction(ListarFacturaBean.java:138)
    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.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
    at javax.faces.component.UICommand.broadcast(UICommand.java:86)
    at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
    at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Unknown Source)
2026-01-09 10:16:44,265 ERROR ReporteFacturaBean:118 - Ocurrió un error generando el reporte Factura. Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

co.com.ebsa.siec.model.exception.SIECException: Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

    at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:331)
    at co.com.ebsa.siec.view.solicitud.bean.ReporteFacturaBean.verReporteFacturaReliquidacion(ReporteFacturaBean.java:60)
    at co.com.ebsa.siec.view.utilitarios.bean.ListarFacturaBean.imprimirFacturaAction(ListarFacturaBean.java:138)
    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.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
    at javax.faces.component.UICommand.broadcast(UICommand.java:86)
    at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
    at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:236)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:839)
    at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:855)
    at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:112)
    at co.com.ebsa.siec.model.util.StoredProcedureGlobal.execute(StoredProcedureGlobal.java:90)
    at co.com.ebsa.siec.model.dao.jdbc.FacturaDAOJdbcImpl.generarFactura(FacturaDAOJdbcImpl.java:733)
    at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:314)
    ... 31 more
Caused by: java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
    at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
    at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
    at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:857)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:822)
    ... 36 more
2026-01-09 10:16:44,281  INFO ListarFacturaBean:145 - Saliendo de imprimirFacturaAction
 

Alguien me puede dar una orientación al respecto?.

Les agradezco de antemano cualquier ayuda.

Posted in Enviado por william.diaz el Mié, 2026-01-09 13:30.

Comentarios

domix | Mié, 2026-01-09 16:53

Hola,

Tu problema es mas de Jdbc que de Spring, se debe a la conversion de tipos de dato java a jdbc, revisa si estan haciendo bien la conversion.

 

william.diaz | Mié, 2026-01-09 17:35

Lo curioso es que el error es en una linea dentro del package de la BD y en esa liena lo que se hace es un select normal:

SELECT TO_NUMBER (valor)
  INTO mi_costo_racionamiento1
  FROM parametro_periodo
 WHERE ano = 2007 AND mes = 12 AND parametro = 'COSTO_CI';

 

Y es el mismo codigo tanto para las conexiones desde el tomcat de linux y windows.

Como hago para verificar las conversiones en el jdbc?

domix | Mié, 2026-01-09 19:01

puedes intentar ejecutar tu package desde alguna herramienta de administracion, como dbvisualizer o squirrel, o sqldeveloper.

 

Saludos

william.diaz | Jue, 2026-01-10 08:13

Hola domix.

El package funciona perfecto desde sqlplus, toad.

En le momento que se crea una conexion desde el tomcat hacia la bd, de alguna forma en esa conexión se envia que los decimales son , y no .? si eso es asi, como puedo cambiar eso?.

domix | Jue, 2026-01-10 16:26

Pues puede ser en el script de arranque de Tomcat que establezcas el locale que usara la JVM, algo como:

java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN

Saludos

 

william.diaz | Vie, 2026-01-11 15:08

Hola domix.

 

Quiero darle las gracias por su colaboración, con esa instrucción de los parametros de java pude solucionar mi problema.

 

Muchas gracias.