jfinal2.2怎样使用多在使用ADO访问数据源时

让JFinal的ActiveRecord支持多数据源。
<a data-traceid="question_detail_above_text_l&&
比较喜欢JFinal简单的设计。但是我们的不少项目都需要连接至少两个数据库,而JFinal的ActiveRecord对多数据源支持比较若。周末断断续续花了一天的时间对JFinal进行的ActiveRecord做改造。让JFinal的ActiveRecord支持多数据源。详细见我的博客。
& & &&第一次有人对这个功能提出挑战!感谢
对 JFinal 的支持,希望能早点将代码分享给大家&
& & 这个功能的确很多朋友提出来需要,我也一直在纠结要不要做这个,有几个纠结之处:
1:多数据源下的事务处理问题,如果要支持多数据源下的事务,代码想着就比较难看,将会违反极简设计风格
2:多数据源使用了不同的数据库时,多个 Dialect 的问题,还是代码难看的问题
3:同一个 Model 可以使用不同的 DataSource的问题
4:性能损失问题
5:还有一些其它问题,一时想不起来了
& & 所以 JFinal 一直没有开发这个功能,而是一直在建议开发者将多数据源的项目拆分成多个小项目或子服务,每一个小项目只使用一个数据源
& &不过一切都不好说,说不定
的这个实现能解决我的这些纠结。
& &在此说一下以前对多数据源的设计思路,看与楼主的有多少共同之处:
1:创建多连接池与多ActiveRecordPlugin对象,将不同连接池关联给不同的ActiveRecordPlugin对象,这个与
的思路完全一样
2:将不同的 Model 添加到不同的 ActiveRecordPlugin中
3:TableInfo 中添加一个 DataSource属性,在ActiveRecordPlugin初始化时,使 Model 与 DataSource建立关联
4:在 DbKit中添加 getConnection(Class&Model&) 方法,在获取连接时指定modelClass,即不同的 Model 会从不同的 DataSource得到Connection对象
的设计方案能够避免掉我的纠结之处,那就极好了
引用来自“JFinal”的答案
& & &&第一次有人对这个功能提出挑战!感谢
对 JFinal 的支持,希望能早点将代码分享给大家&
& & 这个功能的确很多朋友提出来需要,我也一直在纠结要不要做这个,有几个纠结之处:
1:多数据源下的事务处理问题,如果要支持多数据源下的事务,代码想着就比较难看,将会违反极简设计风格
2:多数据源使用了不同的数据库时,多个 Dialect 的问题,还是代码难看的问题
3:同一个 Model 可以使用不同的 DataSource的问题
4:性能损失问题
5:还有一些其它问题,一时想不起来了
& & 所以 JFinal 一直没有开发这个功能,而是一直在建议开发者将多数据源的项目拆分成多个小项目或子服务,每一个小项目只使用一个数据源
& &不过一切都不好说,说不定
的这个实现能解决我的这些纠结。
& &在此说一下以前对多数据源的设计思路,看与楼主的有多少共同之处:
1:创建多连接池与多ActiveRecordPlugin对象,将不同连接池关联给不同的ActiveRecordPlugin对象,这个与
的思路完全一样
2:将不同的 Model 添加到不同的 ActiveRecordPlugin中
3:TableInfo 中添加一个 DataSource属性,在ActiveRecordPlugin初始化时,使 Model 与 DataSource建立关联
4:在 DbKit中添加 getConnection(Class&Model&) 方法,在获取连接时指定modelClass,即不同的 Model 会从不同的 DataSource得到Connection对象
的设计方案能够避免掉我的纠结之处,那就极好了
多谢@JFinal的建议。我说说我的设计,希望@JFinal多给些建议。
几个关键点的设计: 核心数据结构:
private static class GroupEntry{
private DataSource dataSource =
private Dialect dialect =
private ICache cache = new EhCache();
private boolean showSql =
private int transactionLevel = Connection.TRANSACTION_READ_COMMITTED;
private ThreadLocal&Connection& threadLocal = new ThreadLocal&Connection&();
//此处省略getset方法
public static final String DEFAULT_GROUP = &default&;
private static ConcurrentMap&String, GroupEntry& groupMap= new ConcurrentHashMap&String, GroupEntry&();
GroupEntry defaultGroupEntry = new GroupEntry();
groupMap.put(DEFAULT_GROUP, defaultGroupEntry);
public static GroupEntry registGroup(String group){
GroupEntry groupEntry = new GroupEntry();
groupMap.put(group, groupEntry);
return groupE
public static GroupEntry getGroupEntry(String group){
return groupMap.get(group);
多个ActiveRecordPlugin间基本是独立的。
Model中添加如下代码,以获得所属分组:&
private final String group = tableInfoMapping.getGroupOfClass(getClass());
当然处于性能考虑tableInfoMapping中新增了:&
private static final Map&Class&? extends Model&?&&, String& classGroupMap =
new HashMap&Class&? extends Model&?&&, String&();
这个结构会在buildTableInfo时构建。
Model,Db,DbKit相关操作都添加了group参数。通过
public static GroupEntry getGroupEntry(String group)
就能拿到所需的各种信息。
目前比较麻烦的是多数据源的事务问题,还有原来的Tx系列拦截器也只能在一个数据源的事务中运行,如果涉及多数据源的事务问题,目前只能手工写事务处理代码,不能用拦截器。
关于性能损失问题,我简单测试了一下,几乎没有损失,只是比以前多了一次从Map中查找操作。
对于同一个Model使用不同数据源的问题: 1)目前Model初始化时会自动查到自己所属group,如果一个Model只属于一个数据源,对开发者而言,这里不用做改动。静态dao也没问题。 2)继续1),如果两个数据源都有相同的table,想用同一个Model解决,可以建立一个Model,然后再建立两个Model,直接继承即可,这种方式本质还是一个Model一个数据源,实现也简单,不好就是会多出一些类来。 3)一个Model使用多个数据源,Model本身有一个M group(String group)方法。可以这样:
new User().group(&systemA&).set(&name&,&玛雅牛&).save();
List&User& users = new User().group(&systemA&).find(&select * from user&);
List&User& users = User.dao.group(&systemA&).find(&select * from user&);
这种方式下,User.dao.group(&systemA&)可能会有副作用,就是在多线程情况下,非线程安全。线程安全起见,建议用 new User().group(&systemA&)的方式。&&
--- 共有 4 条评论 ---
我现在就遇到了 很多个数据库的问题 。
可能有上千个数据库,里面的表都一样。所以在代码里,要不停的切换切换再切换。我建了相同的Model,但是没有发现你说的Group这个对象呢。请问怎么处理,谢谢指导
: 这个目前已经做到了。
总之,用户在使用时,除了在 configPlugin(Plugins me)中有点不同外,其它地方完全一样,User.dao.find(...) 会自动匹配对应的DataSource、Dialect、showSql这样的配置
设计方向跟我大致是一样的,最大的不同是,获取 Group 变量需要是透明的,在 YourModel中通过 getClass() 作为参数来获取 Gourp对象,这样在 User.dao.find(..) 时就不需要再 group("systemA")这样的代码了极方便
http://my.oschina.net/myaniu/blog/186596
代码已放出,各位看看
表示我最近也在纠结这个问题。。。
引用来自“猎户座”的答案表示我最近也在纠结这个问题。。。可以尝试一下,能给出建议最好。
这个支持下!jFinal多数据源配置首先要感谢@玛雅牛的博客&http://my.oschina.net/myaniu/blog/185331因为公司要用基于jfinal框架下一个系统同时连接两个不同类型的数据库mysql和postgresql。首先要多配置一个数据源,其次在每个model里面注明要加载哪个数据源&。
log.info(&configPlugin 配置ActiveRecord插件&);
ActiveRecordPlugin arpMain = new ActiveRecordPlugin(DictKeys.db_dataSource_main,druidPlugin);
ActiveRecordPlugin arpMaintwo = new
ActiveRecordPlugin(DictKeys.db_dataSourcetwo_main,druidPlugintwo);
// 设置开发模式
arpMain.setDevMode(getPropertyToBoolean(DictKeys.config_devMode, false));
arpMaintwo.setDevMode(getPropertyToBoolean(DictKeys.config_devMode, false));
// 是否显示SQL
arpMain.setShowSql(getPropertyToBoolean(DictKeys.config_devMode, false));
arpMaintwo.setShowSql(getPropertyToBoolean(DictKeys.config_devMode, false));
String db_type_mysql = (String)PropertiesPlugin.getParamMapValue(DictKeys.db_type_mysql);
String db_type_postgre=(String)PropertiesPlugin.getParamMapValue(DictKeys.db_type_postgresql);
if(db_type_mysql.equals(DictKeys.db_type_mysql)){
log.info(&configPlugin 使用数据库类型是 mysql&);
arpMain.setDialect(new MysqlDialect());
arpMain.setContainerFactory(new CaseInsensitiveContainerFactory(true));
if(db_type_postgre.equals(DictKeys.db_type_postgresql)){
log.info(&configPlugin 使用数据库类型是 postgresql&);
arpMaintwo.setDialect(new PostgreSqlDialect());
arpMaintwo.setContainerFactory(newCaseInsensitiveContainerFactory(true));
log.info(&configPlugin 添加druidPlugin插件&);
//多数据源添加
me.add(druidPlugin);
me.add(druidPlugintwo);
log.info(&configPlugin 表扫描注册&);
Map&String, ActiveRecordPlugin& arpMap =
new HashMap&String, ActiveRecordPlugin&();
arpMap.put(DictKeys.db_dataSource_main, arpMain);
arpMap.put(DictKeys.db_dataSourcetwo_main,arpMaintwo );
new TablePlugin(arpMap).start();
me.add(arpMain);
me.add(arpMaintwo);
log.info(&I18NPlugin 国际化键值对加载&);
me.add(new I18NPlugin());
log.info(&EhCachePlugin EhCache缓存&);
me.add(new EhCachePlugin());
log.info(&SqlXmlPlugin 解析并缓存 xml sql&);
me.add(new SqlXmlPlugin());分享到:最近浏览暂无贡献等级&LV4&LV11&LV1&LV18&LV1暂无贡献等级&LV1暂无贡献等级&LV2扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友比较喜欢JFinal简单的设计。但是我们的不少项目都需要连接至少两个数据库,而JFinal的ActiveRecord对多数据源支持比较若。周末断断续续花了一天的时间对JFinal进行的ActiveRecord做改造。
设计目标如下:1)既有的单数据源的JFinal代码不用修改一行代码就可以自然支持。2)Model,Record都支持多数据源,而且改动量要小。3)性能不能很大损失。实现思路:1)一个数据源即一个分组(group),多个数据源既有多个分组,每个Mode只能属于一个分组。Record不限制分组。2)default是一个默认分组,当不指定分组名师,默认采用default分组。这个用来解决兼容问题。3)尽量启动时计算一下,减少每次请求的计算。
实现结果:1)原来的JFinal方式兼容,但是删除掉了Model和Record中关于DataSource为参数的操作,给位group多数据源方式:
public void configPlugin(Plugins me) {
差异在于ActiveRecordPlugin多了一个构造函数。Model的写法和以前一样。不用改变。
如果要在Controller上配置事务(TX系列拦截器)拦截器,configRoute(Routes me) 函数也得做一定改变。若不用事务拦截器,则还和原来一样。使用拦截器的话代码如下:
阅读(...) 评论()JFinal可以配置几个Oracle数据源?
<a data-traceid="question_detail_above_text_l&&
你好,想跟你请教个问题:JFinal可以配置几个Oracle数据源?我配置1个Oracle、1个MySQL和1个SQL server之后,再配置一个Oracle数据源时报错。
以下是问题补充:
:使用的是DruidPlugin
引用来自“JFinal”的评论& &对配置的个数据没有限制,出现错误可能是别的原因,贴出异常信息来看看我PL/SQL都可以连接上
--- 共有 2 条评论 ---
: 最后发现数据库的SID不对,sorry,不是JFinal问题
设置 oracle 方言没 ?
引用来自“JFinal”的评论& &对配置的个数据没有限制,出现错误可能是别的原因,贴出异常信息来看看[ERROR]-[Thread: main]-[com.alibaba.druid.pool.DruidDataSource.init()]: init datasource error
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
[ERROR]-[Thread: main]-[com.alibaba.druid.pool.DruidDataSource.init()]: dataSource init error
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED jfinal: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:91)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
... 20 more
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
[WARN]-[Thread: main]-[org.eclipse.jetty.webapp.WebAppContext.doStart()]: Failed startup of context o.e.j.w.WebAppContext{/,file:/E:/code/workspace/sendMessage/WebRoot/}
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:91)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
... 20 more
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED o.e.j.w.WebAppContext{/,file:/E:/code/workspace/sendMessage/WebRoot/}: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:91)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
... 20 more
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED org.eclipse.jetty.server.Server@36189ddf: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:91)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:171)
at com.demo.common.DemoConfig.configPlugin(DemoConfig.java:170)
at com.jfinal.core.Config.configJFinal(Config.java:48)
at com.jfinal.core.JFinal.init(JFinal.java:65)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.jfinal.server.JettyServer.doStart(JettyServer.java:121)
at com.jfinal.server.JettyServer.start(JettyServer.java:64)
at com.jfinal.core.JFinal.start(JFinal.java:137)
at com.demo.common.DemoConfig.main(DemoConfig.java:195)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.&init&(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.&init&(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:80)
... 20 more
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 31 more
--- 共有 1 条评论 ---
设置 oracle 方言没?
& &对配置的个数据没有限制,出现错误可能是别的原因,贴出异常信息来看看}

我要回帖

更多关于 excel数据源怎么设置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信