【问题标题】:grails war java.sql.SQLException: Io exception: Invalid number format for port numbergrails war java.sql.SQLException:Io异常:端口号的数字格式无效
【发布时间】:2011-05-27 19:44:53
【问题描述】:

奇怪的问题 - 我们在 windows 上构建了一个 grails 项目,它工作正常,但在 unix 机器上得到:

java.sql.SQLException: Io exception: Invalid number format for port number
(stack trace below)

很奇怪,因为我们将数据源定义为来自 jndi:

DataSource.groovy:

envName {
        dataSource {
            dbCreate = "none"
            jndiName = "java:comp/env/jdbc/ourDataSource"
            dialect="org.hibernate.dialect.Oracle10gDialect"
        }

jndi 由应用服务器上 context.xml 中的设置处理:

 <Resource name="jdbc/ourDataSource" 
       auth="Container" 
       type="javax.sql.DataSource" 
       username="OUR_DB_USERNAME" 
       password="OUR_DB_PASSWORD" 
       driverClassName="oracle.jdbc.OracleDriver"
       url="jdbc:oracle:thin:@host:1521:sid" 
       maxActive="8" 
       maxIdle="4"/>

我们希望构建与环境无关。检查增量:

两者都使用略有不同的 JDK 版本 - 在 unix 上为 1.6.0_21,在 Windows 上为 1.6.0_22。假设这不是一个因素。

我们同时使用 grails 3.5.1。

调试 我已经在 unix 机器和 windows 机器上扩展了 grails 生成的 WAR 文件,默认情况下它没有在 WEB-INF/lib 中包含很多 JAR 依赖项,但没有抱怨。我通过在 Config.groovy 中设置 JAR 依赖项来添加这些,因此它们现在存在,但构建 WEB-INF/类似乎有所不同。

想法不足 - 任何建议将不胜感激。

grails 命令在 unix 上构建: <pre>grails -Dgrails.env=envName war OUR.WAR</pre>

完整的堆栈跟踪是:

ERROR  initWebApplicationContext, Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'lobHandlerDetector' while setting bean property 'lobHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lobHandlerDetector': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'lobHandlerDetector' while setting bean property 'lobHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lobHandlerDetector': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    ... 5 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'lobHandlerDetector' while setting bean property 'lobHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lobHandlerDetector': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    ... 5 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lobHandlerDetector': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    ... 5 more
Caused by: org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    ... 5 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Invalid number format for port number)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at $Proxy22.getMetaData(Unknown Source)
    ... 5 more
Caused by: java.sql.SQLException: Io exception: Invalid number format for port number
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:439)
    at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)
    ... 7 more

令人讨厌的是,所有 java/maven 构建都是简单的迁移 - 但 grails 使用 ivy 而不是 maven - 希望 vmware/springsource 的人将来会提供完整的 maven 集成,以消除这些困难。

但是现在任何帮助都会很棒 - 或者对其他要调试的东西提出建议

【问题讨论】:

    标签: unix grails build environment war


    【解决方案1】:

    解决方法:添加 java.sql.SQLException 断点

    我已经解决了这个问题。在 Eclipse 中,在 java.sql.SQLException 上添加了断点。通过堆栈查找它在 DataSource.groovy 中选择了错误的配置;反过来,Hudson 中的 -Dgrails.env 参数没有被采纳。很痛苦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多