jfinal3.4连接多数据源,一个mysql,一个Oracle

  1. /**
  2.  * 配置插件
  3.  */
  4. public void configPlugin(Plugins me) {
  5. // 配置 druid 数据库连接池插件
  6. DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
  7. me.add(druidPlugin);
  8. // 配置ActiveRecord插件
  9. ActiveRecordPlugin arp = new ActiveRecordPlugin("db1",druidPlugin);
  10. // 所有映射在 MappingKit 中自动化搞定
  11. _MappingKit.mapping(arp);
  12. arp.setShowSql(true);
  13. me.add(arp);
  14. //============================================================================================
  15. //
  16. DruidPlugin druidPlugin1 = new DruidPlugin(PropKit.get("orlurl"), PropKit.get("orlusername"), PropKit.get("orlpassword").trim());
  17. druidPlugin1.setDriverClass("oracle.jdbc.driver.OracleDriver"); 
  18. me.add(druidPlugin1);
  19. // 配置ActiveRecord插件
  20. ActiveRecordPlugin arp1 = new ActiveRecordPlugin("db2",druidPlugin1);
  21. arp1.setDialect(new OracleDialect());
  22. arp1.setContainerFactory(new CaseInsensitiveContainerFactory());
  23. me.add(new EhCachePlugin());
  24. arp1.addMapping("BDC_REC", "SLID",Rec.class);
  25. arp1.setShowSql(true);
  26. me.add(arp1);
  27. }

但是启动就报错。

  1. java.lang.NoClassDefFoundError: net/sf/ehcache/CacheManager
  2. at com.jfinal.plugin.ehcache.EhCachePlugin.createCacheManager(EhCachePlugin.java:91)
  3. at com.jfinal.plugin.ehcache.EhCachePlugin.start(EhCachePlugin.java:61)
  4. at com.jfinal.core.Config.startPlugins(Config.java:128)
  5. at com.jfinal.core.Config.configPluginWithOrder(Config.java:71)
  6. at com.jfinal.core.Config.configJFinal(Config.java:56)
  7. at com.jfinal.core.JFinal.init(JFinal.java:63)
  8. at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  9. at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
  10. at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
  11. at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
  12. at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4708)
  13. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5348)
  14. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
  15. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
  16. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
  17. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  18. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  19. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  20. at java.lang.Thread.run(Thread.java:745)
  21. Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager
  22. at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
  23. at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1163)
  24. ... 19 more

orlurl=jdbc:oracle:thin:@192.168.0.116:1521:orcl

orlusername=system

orlpassword=123456

连接局域网的另一个Oracle数据库。

希望大神指导下。怎么连接。

评论区

JFinal

2018-10-09 19:11

这个错误是 EhCachePlugin 没有引入依赖,不是 ActiveRecordPlugin 的错误

山有鬼兮

2018-10-09 19:21

我引入了啊import com.jfinal.plugin.ehcache.EhCachePlugin;@JFinal 波哥

JFinal

2018-10-09 19:25

我只看异常,注掉: me.add(new EhCachePlugin()) 试试

山有鬼兮

2018-10-09 20:32

public Record get(String slid){
return Db.use("db2").findFirst("select * from BDC_REC WHERE SLID=?",slid);
}
返回的是null,从数据库差是有这条记录的。
而且控制台:Sql: select * from BDC_REC WHERE SLID=?
执行了这条sql。@JFinal 波哥

JFinal

2018-10-09 20:33

你确定 slid 这个参数值是正确的?

jfinal 执行查询是直接转调的底层 JDBC,是不可能出错的

山有鬼兮

2018-10-10 15:30

数据库的SLID后面居然有几个空格!!!

热门反馈

扫码入社