JDBC连接oracle 出问题:Listener refused the connection! 高手请进~~

kendy3124155 2009-04-14 10:10:45
我现在在做一个小项目,环境是MYECLIPS6+TOMCAT5+ORACLE10g
当我在页面浏览时,总出现间接性的数据库连接错误,郁闷了很久。。


下面是MYECLIPSE中报的错误:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
192.168.133.250:1521:oracle

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:279)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:318)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:343)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:147)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.zjsoft.zjsj.util.Database.getConnection(Database.java:59)
at org.zjsoft.zjsj.util.Database.getPreparedStatement(Database.java:79)
at org.zjsoft.zjsj.dao.impl.DepartmentDAOImpl.getDepartmentByID(DepartmentDAOImpl.java:41)
at org.zjsoft.zjsj.dao.impl.ApplyTypeDAOImpl.setData(ApplyTypeDAOImpl.java:104)
at org.zjsoft.zjsj.dao.impl.ApplyTypeDAOImpl.getApplyTypeByID(ApplyTypeDAOImpl.java:25)
at org.zjsoft.zjsj.dao.impl.ApplyDAOImpl.setDataList(ApplyDAOImpl.java:151)
at org.zjsoft.zjsj.dao.impl.ApplyDAOImpl.listApplyByStatus(ApplyDAOImpl.java:36)
at org.zjsoft.zjsj.servlet.accepter.AcceptStatusServlet.doPost(AcceptStatusServlet.java:42)
at org.zjsoft.zjsj.servlet.accepter.AcceptStatusServlet.doGet(AcceptStatusServlet.java:24)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.zjsoft.zjsj.filter.EncodingFilter.doFilter(EncodingFilter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)



下面是我浏览器上显示的错误:
java.lang.NullPointerException
org.zjsoft.zjsj.util.Database.getPreparedStatement(Database.java:81)
org.zjsoft.zjsj.dao.impl.DepartmentDAOImpl.getDepartmentByID(DepartmentDAOImpl.java:41)
org.zjsoft.zjsj.dao.impl.ApplyTypeDAOImpl.setData(ApplyTypeDAOImpl.java:104)
org.zjsoft.zjsj.dao.impl.ApplyTypeDAOImpl.getApplyTypeByID(ApplyTypeDAOImpl.java:25)
org.zjsoft.zjsj.dao.impl.ApplyDAOImpl.setDataList(ApplyDAOImpl.java:151)
org.zjsoft.zjsj.dao.impl.ApplyDAOImpl.listApplyByStatus(ApplyDAOImpl.java:36)
org.zjsoft.zjsj.servlet.accepter.AcceptStatusServlet.doPost(AcceptStatusServlet.java:42)
org.zjsoft.zjsj.servlet.accepter.AcceptStatusServlet.doGet(AcceptStatusServlet.java:24)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.zjsoft.zjsj.filter.EncodingFilter.doFilter(EncodingFilter.java:25)


org.zjsoft.zjsj.util.Database.getPreparedStatement(Database.java:81)代码如下:
private Connection getConnection() {
Connection connection = null;
try {
Class.forName(DBDRIVER); // 加载数据库驱动类
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection(DBURL, USER, PASSWORD); } catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

...全文
5471 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我试了一下上面的方法,没有效果!还有其他原因吗?麻烦告诉一下,在这里先谢谢大家了!
KING520754 2010-04-12
  • 打赏
  • 举报
回复
间接性的.差不80%就这个原因吧.
此帖结了.
xnfkonglong 2010-03-22
  • 打赏
  • 举报
回复
谢谢楼上的。设一下processes,果然行了。
kendy3124155 2009-04-14
  • 打赏
  • 举报
回复
# tnsnames.ora Network Configuration File: E:\Oracle\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
mumu_java 2009-04-14
  • 打赏
  • 举报
回复
DBURL这个要是数据库的SID,这个名字应该不对。再有看看数据库服务器端监听是否打开。
又是违规昵称 2009-04-14
  • 打赏
  • 举报
回复
确保代码中使用的是sid而不是service name,

如果是共享连接下偶然出现异常,可以尝试增加dispatcher数量
  • 打赏
  • 举报
回复
应该是共享模式造成的这个结果,你可以指定专用模式连接或者处理这个异常,在共享模式连接中,别让他显示在客户端
又是违规昵称 2009-04-14
  • 打赏
  • 举报
回复
oracle是服务名还是实例名?
你tnsnames.ora里的内容贴上来看看

kendy3124155 2009-04-14
  • 打赏
  • 举报
回复
我连接的是远程的,是共享模式

连接参数:
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.133.250:1521:oracle
username=oracle
password=oracle
那个间隔不一定,看我操作的次数了 呵呵~
  • 打赏
  • 举报
回复
能再详细点描述吗?你是连接本地的Oracle,还是远程的
Oracle运行的模式是共享还是专用模式?
你的DBURL是怎么写的?
你说的间接性是多长时间间隔?
edicun 2009-04-14
  • 打赏
  • 举报
回复
有多少人再做这个项目,你试着修改一下最大连接数。以前我遇到是这个问题。

alter system set processes = 300 scope = spfile;

然后重启oracle
多壮志 2009-04-14
  • 打赏
  • 举报
回复
先用其它方式连连,不要先把JAVA的因素搞进来.
又是违规昵称 2009-04-14
  • 打赏
  • 举报
回复
从上面看没发现问题

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧