【发布时间】: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