论坛首页 Java版 Hibernate

Oracle 10g上的问题

浏览 2520 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2004-12-22
使用Tomcat、Hibernate,在Oracle 8i、Oracle 9i都没有问题,换到10g时,启动Tomcat报错,错误信息:

11:47:03,375  INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
11:47:03,867  WARN SettingsFactory:82 - Could not obtain connection metadata
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory, cause:
java.sql.SQLException: Io òì3£: The Network Adapter could not establish the connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:274)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:319)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:344)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:148)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
        at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:82)
        at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:300)
        at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:838)
        at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:821)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:518)
        at net.sf.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59)
        at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71)
        at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1091)
        at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:737)
        at com.lnw.boss.selfservice.system.ActionServlet.bindSessionFactory(ActionServlet.java:67)
        at com.lnw.boss.selfservice.system.ActionServlet.init(ActionServlet.java:44)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:887)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3960)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4283)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:832)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:518)
        at org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:2345)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:598)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:297)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:398)


其中报错的:com.lnw.boss.selfservice.system.ActionServlet.bindSessionFactory(ActionServlet.java:67)

内容如下:
SessionFactory sessionFactory = new Configuration().configure(contractXmlDoc(configFile)).buildSessionFactory();

我已经更换了10g的JDBC驱动,这是怎么回事啊?客户端连接就没有问题。
   
最后更新时间:2004-12-22
引用
java.sql.SQLException: Io òì3£: The Network Adapter could not establish the connection


是你的Oracle Database Listener配置有问题导致的。
   
0 请登录后投票
最后更新时间:2004-12-22
请教,这个Listener应该如何配置?我安装的时候选择了典型设置。
   
0 请登录后投票
最后更新时间:2004-12-22
这是监听启动信息:

LSNRCTL for Linux: Version 10.1.0.2.0 - Production on 23-DEC-2004 00:13:59

Copyright (c) 1991, 2004, Oracle.  All rights reserved.

Starting /opt/oracle/product/10.1.0/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.1.0.2.0 - Production
System parameter file is /opt/oracle/product/10.1.0/network/admin/listener.ora
Log messages written to /opt/oracle/product/10.1.0/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.1.0.2.0 - Production
Start Date                23-DEC-2004 00:13:59
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/10.1.0/network/admin/listener.ora
Listener Log File         /opt/oracle/product/10.1.0/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
   
0 请登录后投票
最后更新时间:2004-12-22
你去仔细看一下你的Java程序连接失败的时候,你的数据库的 listener.log里面的记录。
   
0 请登录后投票
最后更新时间:2004-12-22
启动Tomcat时我都跟踪过listener.log,没有任何信息呀
   
0 请登录后投票
最后更新时间:2004-12-22
那就说明你的Java程序根本就没有向数据库发起过连接请求。
   
0 请登录后投票
最后更新时间:2004-12-23
我监视了Oracle服务器TCP 1521端口,有如下数据:

15:21:30.674300 192.168.88.36.38238 &gt; 192.168.88.35.1521: S 2303299868:2303299868(0) win 5840 &lt;mss 1460,sackOK,timestamp 1062788495 0,nop,wscale 0&gt; (DF)
                         4500 003c 4c93 4000 4006 bc90 c0a8 5824
                         c0a8 5823 955e 05f1 8949 911c 0000 0000
                         a002 16d0 2d01 0000 0204 05b4 0402 080a
                         3f58 dd8f 0000 0000 0103 0300

15:21:30.674340 192.168.88.35.1521 &gt; 192.168.88.36.38238: R 0:0(0) ack 2303299869 win 0 (DF)
                         4500 0028 0018 4000 4006 0920 c0a8 5823
                         c0a8 5824 05f1 955e 0000 0000 8949 911d
                         5014 0000 c881 0000

这是listener回复的吗?但listener.log确实没有记录。也许真的是listener配置有问题,但我看不懂回复的数据包是什么意思。
   
0 请登录后投票
最后更新时间:2004-12-23
搞定了,原来是Oracle 10g的监听使用机器名,而我的连接串用的是IP地址,改成机器名就OK,谢谢robbin!
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐