关于derby数据库的几个问题

小银 发布于 2011/06/22 15:42
阅读 3K+
收藏 2

小弟有几个关于derby数据库的问题....

derby数据库比较小巧,正是一个优点..但是访问的数据库要写路径...指定某个数据库就比较让我头疼,不像oracle,mySql等数据库可以以计算机为单位,连接到指定计算机指定端口,然后提供数据库名就能连接了....如果是derby的话..远程访问岂不是还要指定路径???

我也寻了相关资料:

1、数据库文件的位置

该位置可以由客户端连接的URL决定,如:

jdbc:derby://localhost:1527//Java/workspace1/idb;create=true

这时引用的数据库物理路径为/Java/workspace1/idb。如果像下面这样:

jdbc:derby://localhost:1527/idb;create=true

derby就会在它启动的位置创建数据库,很难找。假如你利用tomcat启动derby,再加上参数create=true,derby会在你启动tomcat的地方自动生成数据库,位置更难预料。

2、在web应用中启动网络服务器NetworkServer :注..这个类是在derby库目录下的derbynet.jar中

启动NetworkServer可以远程维护数据库。derby提供了一个简单的servlet——org.apache.derby.drda.NetServlet,这个servlet可以在web应用启动时自动加载NetworkServer。配置方法如下:

<servlet> 
<servlet-name>derbynet</servlet-name> 
<servlet-class>org.apache.derby.drda.NetServlet</servlet-class> 
<init-param> 
<param-name>startNetworkServerOnInit</param-name> 
<param-value>true</param-value> 
</init-param> 
<init-param> 
<param-name>portNumber</param-name> 
<param-value>1527</param-value> 
</init-param> 
<init-param> 
<param-name>host</param-name> 
<param-value>localhost</param-value> 
</init-param> 
<init-param> 
<param-name>tracingDirectory</param-name> 
<param-value /> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet>

需要注意的是,要将参数load-on-startup设一个较小值,这样derby会先于其它servlet启动,否则会发生无法连接数据库的异常。如果不设置load-on-startup,servlet会延迟加载,直到第一次访问/derbynet,NetworkServer才会真正启动。

还有,如果参数host设置为"localhost",则服务器仅接受来自本机的连接,如果设定为网络域名,就可以接受外部连接,但会导致安全问题,在接受外部连接前,应将其运行在Java security manager下,并启用用户认证。

如何才能解决这个头大的路径问题呢?..或者如何处理才比较好..不至于访问不到数据库或者总是新建数据库

加载中
0
Andre.Z
Andre.Z

System.setProperty("derby.system.home","c:/xxxx/")

随便定个名字,比如a,那就在c:/xxxx下面有个a文件夹,东西都在里面,本地访问用jdbc:derby:a,网络用jdbc:derby://ip:端口/a

0
红薯
红薯
这个本来就是一个轻量级的数据库
0
小银
小银
好吧...那么说说 org.apache.derby.drda.NetServlet这个吧..这个有什么好处么...
0
Andre.Z
Andre.Z
derby本身有控制台的,我就不用这个类的,具体你可以查derby自带的文档,里面都有
0
小银
小银

引用来自“Andre.Z”的答案

derby本身有控制台的,我就不用这个类的,具体你可以查derby自带的文档,里面都有
求大侠说得稍稍再详细点...
返回顶部
顶部