① 求助:Java数据源怎么配置
一 首先要配置Tomcat的server.xml文件,在对应的web应用的<Context>中加入<Resource>元素,比如:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"
maxWait="5000"
url="jdbc:mysql://127.0.0.1/jspdev"
/>
</Context>
其中:
name:指定Resource的JNDI名字
type:指定Resource所属的Java类名
driverClassName:指定连接数据库的JDBC驱动程序
username:指定连接数据库的用户名
password:指定连接数据库的口令
maxIdle:指定数据库连接池中的最大空闲连接数目,0表示不受限制
maxActive:指定数据库连接池中的最大活动连接数目,0表示不受限制
maxWait:指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
url:指定连接数据库的URL
二 在Web应用中使用数据源:
javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:
A.获得对数据源的引用:
Context ctx = new InitalContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/hello");
B.获得数据库连接对象:
Connection con = ds.getConnection();
C.返回数据库连接到连接池:
con.close();
在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。
三 如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。
② odbc数据源配置
1、首先要保证机器上装了oracle服务器端,并且能够正常运行。进入控制面板,将“查看方式” 改为“小图标”。搜塌
③ 为什么要进行数据流程分析,数据流图有哪些组成元素
数据流程图中有以下几种主要元素: →:数据流。数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。 □:数据源(终点)。代表系统之外的实体,可以是人、物或其他软件系统。 ○:对数据的加工(处理)。加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。 〓:数据存储。表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。
④ 如何配置ODBC数据源(以Access数据库为例)
以access数据库为例,Window7 系统,配置数据源,操作步骤如下:
1、打开电脑,点击开始菜单。
⑤ 如何使用solr配置来建立多张表的索引
以下资料整理自网络,以及查看solr帮助文档。主要分为两部分,第一部分是对《db-data-config.xml》的配置内容的讲解(属于高级内容),第二部分是DataImportHandler(属于基础),第三部分是对db-data-config.xml的进阶
第一部分是对《db-data-config.xml》
query是获取全部数据的SQL
deltaImportQuery是获取增量数据时使用的SQL
deltaQuery是获取pk的SQL
parentDeltaQuery是获取父Entity的pk的SQLFull
Import工作原理:
执行本Entity的Query,获取所有数据;
针对每个行数据Row,获取pk,组装子Entity的Query;
执行子Entity的Query,获取子Entity的数据。Delta
Import工作原理:
查找子Entity,直到没有为止;
执行Entity的deltaQuery,获取变化数据的pk;
合并子Entity
parentDeltaQuery得到的pk;
针对每一个pk
Row,组装父Entity的parentDeltaQuery;
执行parentDeltaQuery,获取父Entity的pk;
执行deltaImportQuery,获取自身的数据;
如果没有deltaImportQuery,就组装Query限制:
子Entity的query必须引用父Entity的pk
子Entity的parentDeltaQuery必须引用自己的pk
子Entity的parentDeltaQuery必须返回父Entity的pk
deltaImportQuery引用的必须是自己的pk第二部分是DataImportHandler
关于DataImportHandler的具体使用方法,详见下文,如果你英文超级好,那看这个链接吧:http://wiki.apache.org/solr/DataImportHandler大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。
概览
目标
能够读取关系数据库中的数据。
通过可配置的方式,能够将数据库中多列、多表的数据生成solr文档
能够通过solr文档更新solr
提供 通过配置文件就能够导入所有数据的能力
能够发现并处理
由insert、update带来的变化(我们假定在表中有一个叫做“last-modified的列”)
能够配置 “完全导入”和“增量导入”的时间
让读取xml文件,并建立索引成为可配置。
能够将
其他的数据源(例如:ftp,scp,etc)或者其他格式的文档(Json,csv)以插件的形式集成到项目中。
设计思路
这个Handler首先要在solrconfig.xml文件中配置下,如下所示。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">/home/username/data-config.xml</str>
</lst>
</requestHandler>从它的名字上,我们或许也可以猜到,
DataImportHandler正是requestHandler的实现。我们一共需要在两个地方配置文件中进行一些配置。
solrconfig.xml 。
data-config.xml必须在这个文件中配置,datasource也可以。不过,一般将datasource放在data-config.xml文件中。
data-config.xml怎样获取数据?(查询语句、url等等)
要读什么样的数据(关系数据库中的列、或者xml的域)
做什么样的处理(修改/添加/删除)
跟关系数据库一起使用
下面几个步骤是必要的.
定义一个data-config.xml 文件,并这个它的路径配置到solrconfig.xml
中关于DataImportHandler的配置中。
给出Connection的信息(假设你选择在solrconfig中配置datasource)
打开DataImportHandler页面去验证,是否该配置的都配置好了。http://localhost:8983/solr/dataimport
使用“完全导入”命令将数据从数据库中导出,并提交给solr建立索引
使用“增量导入”命令对数据库发生的变化的数据导出,并提交给solr建立索引。
配置数据源
将dataSource标签直接添加到dataConfig下面,即成为dataConfig的子元素.
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="db_username" password="db_password"/>数据源也可以配置在solrconfig.xml中
属性type 指定了实现的类型。它是可选的。默认的实现是JdbcDataSource。
属性 name 是datasources的名字,当有多个datasources时,可以使用name属性加以区分
其他的属性都是随意的,根据你使用的DataSource实现而定。
当然 你也可以实现自己的DataSource。
多数据源
一个配置文件可以配置多个数据源。增加一个dataSource元素就可以增加一个数据源了。name属性可以区分不同的数据源。如果配置了多于一个的数据源,那么要注意将name配置成唯一的。
例如:
<dataSource type="JdbcDataSource" name="ds-1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db1-host/dbname" user="db_username" password="db_password"/>
<dataSource type="JdbcDataSource" name="ds-2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db2-host/dbname" user="db_username" password="db_password"/>
然后这样使用 ..
<entity name="one" dataSource="ds-1" ...>
..
</entity>
<entity name="two" dataSource="ds-2" ...>
..
</entity>
..
配置JdbcDataSource
JdbcDataSource中的属性有
driver(必需的):jdbc驱动名称
url(必需的):jdbc链接
user:用户名
password:密码
批量大小:jdbc链接中的批量大小
任何其他的在JdbcDataSource中配置的属性,都会被直接传给jdbc
driver
配置data-config.xml
solr
document是schema,它的域上的值可能来自于多个表.
data-config.xml的根元素是document。一个document元素代表了一种文档。一个document元素中包含了一个或者多个root实体。一个root实体包含着一些子实体,这些子实体能够包含其他的实体。实体就是,关系数据库上的表或者视图。每个实体都能够包含多个域,每个域对应着数据库返回结果中的一列。域的名字跟列的名字默认是一样的。如果一个列的名字跟solr
field的名字不一样,那么属性name就应该要给出。其他的需要的属性在solrschema.xml文件中配置。
为了能够从数据库中取得想要的数据,我们的设计支持标准sql规范。这使得用户能够使用他任何想要的sql语句。root实体是一个中心表,使用它的列可以把表连接在一起。
dataconfig的结构
dataconfig的结构不是一成不变的,entity和field元素中的属性是随意的,这主要取决于processor和transformer。
以下是entity的默认属性
name(必需的):name是唯一的,用以标识entity
processor:只有当datasource不是RDBMS时才是必需的。默认值是SqlEntityProcessor
transformer:转换器将会被应用到这个entity上,详情请浏览transformer部分。
pk:entity的主键,它是可选的,但使用“增量导入”的时候是必需。它跟schema.xml中定义的uniqueKey没有必然的联系,但它们可以相同。
rootEntity:默认情况下,document元素下就是根实体了,如果没有根实体的话,直接在实体下面的实体将会被看做跟实体。对于根实体对应的数据库中返回的数据的每一行,solr都将生成一个document。
一下是SqlEntityProcessor的属性
query (required) :sql语句
deltaQuery : 只在“增量导入”中使用
parentDeltaQuery : 只在“增量导入”中使用
deletedPkQuery : 只在“增量导入”中使用
deltaImportQuery : (只在“增量导入”中使用) .
如果这个存在,那么它将会在“增量导入”中导入phase时代替query产生作用。这里有一个命名空间的用法${dataimporter.delta.}详情请看solr1.4.