Java Wicket和第三方连接池实现

Java Wicket和第三方连接池实现,java,wicket,connection-pooling,Java,Wicket,Connection Pooling,我们应该如何构造利用第三方连接池的Wicket应用程序?(例如BoneCP、c3P0、HikariCP)。在过去,假设web应用程序将部署在ApacheTomcat上,我们只会通过JNDI使用默认的Tomcat池 考虑到: 我目前正在查看的库(HikariCP)没有 对Tomcat/JNDI()的显式支持 设置JNDI本身的方法因应用服务器而异 (比方说Tomcat vs Jetty,我上周末一直在努力 jetty JNDI查找工作,并放弃) 是否有跨应用程序服务器的方法在Wicket应用程序中

我们应该如何构造利用第三方连接池的Wicket应用程序?(例如BoneCP、c3P0、HikariCP)。在过去,假设web应用程序将部署在ApacheTomcat上,我们只会通过JNDI使用默认的Tomcat池

考虑到:

  • 我目前正在查看的库(HikariCP)没有 对Tomcat/JNDI()的显式支持
  • 设置JNDI本身的方法因应用服务器而异 (比方说Tomcat vs Jetty,我上周末一直在努力 jetty JNDI查找工作,并放弃)
  • 是否有跨应用程序服务器的方法在Wicket应用程序中设置连接池? 回到JSP时代,我可能会使池对象成为应用程序类中的单例成员,这在Wicket中有效(或推荐)吗

    public class WicketApplication extends WebApplication {
      //
      private SomePoolObject poolInstance; 
      //
      public static Connection getConnection() {
         if (poolInstance == null) {
            poolInstance = ...; //create pool 
         }  
         return poolInstance.getConnection(); 
      } 
    }
    

    提前谢谢

    我从未使用过Wicket,但它似乎带有嵌入式Jetty。此链接:似乎指示如何在Jetty中设置JNDI数据源。那么,让Wicket使用JNDI来处理这个问题吗?Wicket可以部署到任何Servlet容器中,所以jetty不是必需的。问题是,每个容器都有不同的方法来设置JNDI+连接池,所以我想知道我在帖子中介绍的方法是否适用于wicket应用程序(优点是),所以我不必担心我是否必须移动到另一个容器中。我认为上述方法是有效的。但我也怀疑,如果一些用户通过其应用服务器的标准机制(其中“标准”实际上是该平台的专有机制)配置了数据源,而您的应用程序没有获取该数据源,那么他们可能会感到惊讶。虽然从属性文件加载池配置,而不是在应用程序中对其进行硬编码,可能会在一定程度上缓解这一问题。