我在工作中使用solr4.5.1。
问题在于,当我执行数据导入(完全导入)时,发生了很多getConnection
。所以我想是否可以将HikariCP用于数据导入,但是我还没有发现类似的问题。
有可能吗?如果是这样,请指教。
Solr 4.5.1 与Tomcat
data-config.xml
<dataSource driver="oracle.jdbc.driver.OracleDriver"
name="jdbc"
url="jdbc:oracle:thin:@address/mydb"
user="user" password="pass"/>
答案 0 :(得分:0)
大量借用 David H Nebinger 的帖子:Tomcat and HikariCP。
安装HikariCP
要使用JNDI,您需要在JNDI声明中声明JNDI数据源及其所有设置,密码和缓存选项。这与Solr无关。这是Tomcat机制。 this tutorial that also makes use of HikariCP中介绍了如何执行此操作。
首先是从http://brettwooldridge.github.io/HikariCP/下载.zip或.tar.gz文件。这实际上是您需要自己构建的源代码版本。
第二个选项是从Maven Central https://mvnrepository.com/artifact/com.zaxxer/HikariCP
之类的源下载构建的jar。一旦有了jar,请复制到Tomcat lib/ext
目录。请注意,Hikari CP确实依赖于SLF4J,因此您也需要将该jar放入lib/ext
。
不要忘记将数据源的JDBC驱动程序放在lib/ext
文件夹中。
配置JNDI数据源
JNDI数据源<Resource />
定义的位置取决于连接的范围。您可以通过在Tomcat的conf/server.xml
和conf/context.xml
中指定它们来全局定义它们,也可以通过在conf/Catalina/localhost/WebAppContext.xml
中定义它们(在其中WebAppContext
是Web应用程序)来将它们划分为单个应用程序应用的上下文,基本上是Tomcat的webapps目录中的目录名称。
创建文件conf/Catalina/localhost/ROOT.xml
(如果尚不存在)。使用https://github.com/brettwooldridge/HikariCP#popular-datasource-class-names中的表查找您的数据源类名称,定义元素时将需要它。
<Resource name="jdbc/SolrPool" auth="Container"
factory="com.zaxxer.hikari.HikariJNDIFactory"
type="javax.sql.DataSource"
minimumIdle="5"
maximumPoolSize="10"
connectionTimeout="300000"
dataSourceClassName="oracle.jdbc.pool.OracleDataSource"
dataSource.url="jdbc:oracle:thin:@address/mydb"
dataSource.implicitCachingEnabled="true"
dataSource.user="user"
dataSource.password="pass" />
在Solr中使用JNDI数据源
在学习了本教程之后,您将需要使用声明的JNDI数据源,就像described in the Solr Wiki:
<dataSource
jndiName="java:jdbc/SolrPool"
type="JdbcDataSource"
user="" password=""/> <!-- leave out user/password here -->