You are browsing the archive for 2009 01月.

c3p0连接池连接Oracle报ORA-12519

1:05 pm in Java开源 by aronezhang

 

在使用Spring集成Hibernate开发Web应用时,数据库持久层采用Hibernate,我在开发过程中为了测试的方便,

就在本机安装了Oracle Express 10g数据库,然后在hibernate.cfg.xml配置文件中添加c3p0作为连接池,

但是在开发过程中,频繁的进行测试,会发现经常爆出如下的错误信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:
localhost:1521:xe
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
  at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
  at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:420)
  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 com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:81)
  at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:96)
  at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.acquireResource(C3P0PooledConnectionPool.java:89)
  at com.mchange.v2.resourcepool.BasicResourcePool.acquireUntil(BasicResourcePool.java:665)
  at com.mchange.v2.resourcepool.BasicResourcePool.access$500(BasicResourcePool.java:32)
  at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1204)
  at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)

 

上面的错误是由于Oracle Express 10g的默认配置连接数只有20,而在hibernate.cfg.xml配置使用c3p0连接池的最大连接数远远超过了这个数据库允许

的数量,因此但频繁的去连接数据库的时候,无法获得连接,数据库Listner就直接拒绝连接的请求,因此只要修改c3p0连接池最大最小连接数为

合适的值即可,如下的配置:

1
2
5
10

 

 

我的博客终于有了户口

2:22 pm in 探索者故事 by aronezhang

 

 

早上一开电脑,我的Google Talk的邮件提醒弹出“关于ICP备案申请审核通过的通知”,打开邮件一看:

 

尊敬的用户[]:您的ICP备案申请已通过审核,备案/许可证编号为: 沪ICP备09000292号 ,审核通过日期:2009-01-12。

 

着实让我“惊喜”了一把,为什么会惊喜呢?

在我的备案材料中,可以查询出我的备案时间为:2008-01-29 22:01:49,到今天审核通过:2009-01-12,经历了一年仅差7天。

 

在我的Gmail信箱中以“关于网站主办者备案信息核实超期的通知”作为关键字

进行搜索,整整有27封超期的邮件通知(提交备案材料后,超过一段时间没有被审批后,每5天一提醒);

 

我不知道为什么会这样,我原本都已经没有报什么希望了,已经做好随时被关闭博客的准备。

 

不管怎么样,还是要感谢那些辛勤工作的审批人员,从此我的博客终于有了户口了!!!

 

户口的编号是: 沪ICP备09000292

 

 

今天有点霉

4:09 pm in 生活点滴/Enjoy Life by aronezhang

 

 

从2008/9/21进入广东移动项目,一直忙于技术的事情,趁着周末时间,PM预定了一个篮球场,

组织大家活络一下胫骨,基本上4年没有碰过篮球了,本人一直没有什么体育细胞,说打篮球

基本上就是在场上面练习跑步,很难抢到球,也只能等队友们传球,一般传给我球都会给

对方一个很好的抢断机会。

 

可是今天和别人抢球的过程中,由于自己一副僵硬的骨头,把自己的脚给歪了。刚歪的时候竟然

需要大家从场上扶下来,后来也感觉没有多痛。在场边等待同事们继续打球,大约1个小时之后

结束后准备回到住的附近吃饭。可是出来打不到车,走了3条街才有一辆的士,

几个人上了车之后,车还没有行使100米,突然熄火抛锚了,真是“屋漏偏逢连夜雨”;

只好再另外打车,可是一上车,司机说我们住的方向不顺路,他要交班,让我们另外再叫车,“船迟又遇打头风”啊!!!

 

吃完饭之后发现走起路来已经感觉脚踝那里比较痛,动起来比较痛,但是还可以走走。在回住所的路上有个药店,经服务员介绍买了:

一盒 一枝蒿伤湿祛痛膏和一瓶 狮马龙活络油

 

回来擦了活络油并贴上祛痛膏,但是发现过了几个小时之后走起路来更加难了,还好没有肿起来。

 

记录一下比较倒霉的一天:2009/1/10

 

 

MyEclipse7下安装插件

3:55 pm in Java开源 by aronezhang

?

?

MyEclipse7下安装插件和原来的版本有很大的差异,很多插件无法进行自动安装,下面记录一下从网上找到的解决方案。

?

下面以安装jbpm-jpdl-designer-3.0.11插件为实例进行说明:

1,下载插件,解压后将plugin中的文件拷贝到目录D:\Genuitec\MyPlugins\jbpm-jpdl-designer-3.0.11

2,修改com.oracleseeker.tools.CreatePluginsConfig.main中文件路径的值,需要将斜杠修改为双斜杠,并运行它

3,进入MyEclipse7的安装路径,找到Genuitec\MyEclipse 7.0\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info

4,将2运行时控制台输出的内容添加到bundles.info文件的最后

5,通过命令行以clean模式启动MyEclipse:myeclipse.exe –clean

?

CreatePluginsConfig类的定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.oracleseeker.tools;
 
import java.io.File;
import java.util.ArrayList;
import java.util.List;
 
public class CreatePluginsConfig {
 
	private String path;
 
	public CreatePluginsConfig(String path) {
		this.path = path;
	}
 
	public void print() {
		List list = getFileList(path);
		if (list == null) {
			return;
		}
 
		int length = list.size();
		for (int i = 0; i < length; i++) {
			String result = "";
			String thePath = getFormatPath(getString(list.get(i)));
			File file = new File(thePath);
			if (file.isDirectory()) {
				String fileName = file.getName();
				if (fileName.indexOf("_") < 0) {
					continue;
				}
				String[] filenames = fileName.split("_");
				String filename1 = filenames[0];
				String filename2 = filenames[1];
				result = filename1 + "," + filename2 + ",file:/" + path + "\\"
						+ fileName + "\\,4,false";
				System.out.println(result);
			} else if (file.isFile()) {
				String fileName = file.getName();
				if (fileName.indexOf("_") < 0) {
					continue;
				}
				int last = fileName.lastIndexOf("_");
				String filename1 = fileName.substring(0, last);
				String filename2 = fileName.substring(last + 1, fileName
						.length() - 4);
				result = filename1 + "," + filename2 + ",file:/" + path + "\\"
						+ fileName + ",4,false";
				System.out.println(result);
			}
		}
	}
 
	public List getFileList(String path) {
		path = getFormatPath(path);
		path = path + "/";
		File filePath = new File(path);
		if (!filePath.isDirectory()) {
			return null;
		}
		String[] filelist = filePath.list();
		List filelistFilter = new ArrayList();
 
		for (int i = 0; i < filelist.length; i++) {
			String tempfilename = getFormatPath(path + filelist[i]);
			filelistFilter.add(tempfilename);
		}
		return filelistFilter;
	}
 
	public String getString(Object object) {
		if (object == null) {
			return "";
		}
		return String.valueOf(object);
	}
 
	public String getFormatPath(String path) {
		path = path.replaceAll("\\\\", "/");
		path = path.replaceAll("//", "/");
		return path;
	}
 
	public static void main(String[] args) {
		//new CreatePluginsConfig("C:\\eclipse-plugins\\plugins\\JBossTools-2.1.2.GA-ALL-win32").print();
		new CreatePluginsConfig("D:\\Genuitec\\MyPlugins\\jbpm-jpdl-designer-3.0.11").print();
 
	}
}

64位操作系统PL/SQL Developer连接数据库报ORA-12154错误

3:32 pm in Oracle EBS基础 by aronezhang

?

?

在Windows Vista 64位操作系统中安装Oracle Express数据库,安装连接数据库工具PL/SQL Developer,配置好数据库连接信息tnsnames。

连接数据报出如下的错误:

ORA-12154: TNS:could not resolve the connect identifier specified

ORA-12154:TNS:无法解析指定的连接标示

?

开始以为是tnsnames配置有问题,认证检查并通过tnsping命令进行测试,没有任何问题可以连接数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\Arone.Zhang > tnsping xe
 
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 10-1月 -
2009 23:24:30
 
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
 
已使用的参数文件:
C:\oraclexe\app\oracle\product\10.2.0\server\network\admin\sqlnet.ora
 
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = aronezha
ng)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XE)))
OK (30 毫秒)

?

经过搜索,发现是是由于32位软件在64位操作系统下安装的时候,默认会安装在:

C:\Program Files (x86)

而不像在32位操作系统下安装默认的路径是:

C:\Program Files

?

由于Oracle的Net Service在解析连接的时候存在一个Bug,无法解析路径中包括的圆括号,因此最简单的解决方案是:

?

将PL/SQL Developer或其它客户端连接工具安装到没有包括圆括号的目录下。

?

问题解决!

?

另外最好当然是Oracle能够解决这个Bug了。

?

?