本文一步步讲解如何从获得、编译、建立环境到运行 Shark 的方法。按照本文给出的步骤,Shark 可实际运行起来。应该注意的是,本文所用数据库为 MySQL,并在 windows 2000 上运行。本文是从很多笔记和 Shark 小组提供的线索中总结出来的,这种经历痛苦而又幸运。
之所以我没有使用可执行安装程序的原因是,我想从零开始来构建 Shark。
你最好拥有或能够安装下列程序,但这并不是 shark 所必需的,仅仅是本文档的要求:
1、MySQL - 我使用 4.0.16-nt
2、MySQL Connector - 我选择 mysql-connector-java-3.0.11-stable-bin.jar
3、Java - 我使用 Sun j2sdk 版本为 1.4.2_04
4、CVS, Winzip, 等等
首先,自己独立安装它们,然后开始我们的 shark 学习!
获得 Shark
我个人的安装方式是把所有的源文件拷贝到 C:\dev\Shark 目录下,最后的输出路径是 C:\Shark。你也可以自己放在任何地方,不过要调整以下命令。
首先下载 Shark 1.0 http://forge.objectweb.org/project/showfiles.php?group_id=74&release_id=512
对于 Windows 系统,我下载 zip 文件并解包到 C:\dev\Shark 目录。
如果你想获取 CVS (http://forge.objectweb.org/scm/?group_id=74)
上的版本,则命令说明如下:
通过使用下面的命令集,你可以用 anonymous 从 shark 的 cvs 库取到代码。下面的 modulename 指你想要 checkout 的模块名称,如果你不知道模块名称,请用 ”.” 代替。
如果有提示要求输入口令,按 enter 就可以了。
cvs -d:pserver:anonymous@cvs.forge.objectweb.org:/cvsroot/shark login
cvs -z3 -d:pserver:anonymous@cvs.forge.objectweb.org:/cvsroot/shark co modulename
在使用 CVS 的情况下,我把 /dev/Shark 作为 CVS 根目录。
编 译
切换到 C:\dev\Shark 目录。运行下列命令:
configure -help
你会得到下面的输出:
Parameters value for using with configure.bat :
configure - Make build.properties file with default values
configure -help - Display this screen
configure [-jdkhome jdk_home_dir] [-instdir installdir] -writes proper parameters to the build.properties file
Examples :
configure -jdkhome c:/j2sdk1.4.1 -instdir C:/Shark-1.0
有一个 *nix shell 脚本可以做同样的事情。对我来说用这个更简单,我不需要进行 jdkhome 设置,因为我的 JAVA_HOME 已经设置好了,我的安装目录是 c:/Shark,下面是我使用的命令:
configure -instdir c:/Shark
这个命令实际上是在 build.properties 文件中填充属性字段,我的文件是如下:
version=1.0
version_release=beta2
version_build=13
jdk_dir=C:/j2sdk1.4.2_04
install_dir=C:/Shark
build_debug=on
现在准备开始编译了。编译使用 ant,但你应该用已经提供的 make file。使用帮助选项来查看到底有哪些选项可用:
make –help
大部分的选项要求我们必须先完全构建。当然,也可以用 shell 脚本来完成这个任务。我们用下面的命令来完全构建(可能要点时间)。
make buildAll
执行上述命令,ant 会构建所有的参数。凭借少许运气,就会顺利完成。如何处理构建上的问题超出了本文的范畴。最后,把这些前期准备好的原材料,文档,工具等等打包,再装载到之前指定的安装路径。
make install
该命令会组装(拷贝)文件到你的安装路径(我的是 C:\Shark)。
快速测试
为了快速测试,我们将运行默认配置的 Shark 管理程序。
在安装目录中,通常有个叫做 runsa.bat 的文件。运行该文件。Shark 管理程序(swing)将启动,开始向你询问用户名和密码了,分别是 "admin" 和 "enhydra"。如果验证通过,将会马上证明构建是成功的。
TODO:详情请链接到 Enhydra Shark 管理文档
配置 Shark
下面,我们开始配置 Shark
修改 Shark.conf
首先,在 Shark 路径中找到名叫 Shark.conf 的文件。用你喜欢的编辑器打开它,第一个参数是:
enginename=Shark
我们将留下这一主题。正如前面笔记所提到的,虚拟机和数据库的不同将导致配置的差异。对于初次测试,我们不用改变参数值。请注意被注释了的 HypersonicSQL 驱动信息,HSQL 是运行 Shark 的默认数据库,由于 Shark 不能运行在多数据库平台下,我们配置为 MySQL。
# HypersonicSQL
#DatabaseManager.DB.sharkdb.JdbcDriver="org.hsqldb.jdbcDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:hsqldb:C:/Shark/db/hsql/hsql"
未注释的 MySQL 部分:
# MySQL
DatabaseManager.DB.sharkdb.JdbcDriver="org.gjt.mm.mysql.Driver"
DatabaseManager.DB.sharkdb.Connection.Url="jdbc:mysql://localhost/shark"
请注意,这里我还是完全用默认配置。该配置表明数据库是在本地机器上,用户名/密码使用 MySQL 默认的 "sa" 和 ""。如果这种配置不适合你,你完全可以修改它。
#
# Default cache configuration
#
DatabaseManager.defaults.cache.maxCacheSize=0
DatabaseManager.defaults.cache.maxSimpleCacheSize=0
DatabaseManager.defaults.cache.maxComplexCacheSize=0
DatabaseManager.defaults.cache.reserveFactor=0.1
在这个部分,是了解我如何使用 Shark 的好途径,除非你用 CORBA 通讯,否则应用程序将直接与数据库交互。这些都不是 Shark 服务器代码。所以如果你有多个客户端,它们都需要与数据库直接交互。由于无法更新多个客户端的缓存,所以我关闭了缓存。
LRU 缓存也应该被关闭:
#=============================================================================
# Default cache is LRU
#
#-----------------------------------------------------------------------------
# Cache defaults
#
#CacheManagerClassName=org.enhydra.shark.caching.LRUCacheMgr
好了,目的达到,保存后关闭该文件。
创建数据库
现在安装 MySQL,创建一个名为 "shark" 的数据库。如果你想改变名字,需要在 Shark.conf 文件中修改数据库 URL。
其次,编辑 C:\Shark 目录下 recreateDB.bat 文件。注释掉 Hypersonic 部分,再反注释掉 MySQL 部分。
rem HypersonicSQL database
rem rmdir /q /s db\hsql
rem mkdir db\hsql
rem set LOADERJOBXML=sql\hsql\LoaderJob.olj
rem MySQL database
set LOADERJOBXML=sql\mysql\LoaderJob.olj
最后,我们将改变执行调用,因为脚本喜欢创建新窗口,而且在你看见错误信息前就关闭了。像这样修改它:
start "Recreate Database" "C:\j2sdk1.4.2_04\bin\java" -Djava.ext.dirs=lib org.webdocwf.util.loader.Loader -cjs shark/conf %LOADERJOBXML%
修改后:
"C:\j2sdk1.4.2_04\bin\java" -Djava.ext.dirs=lib org.webdocwf.util.loader.Loader -cjs shark/conf %LOADERJOBXML%
当然,如果你的 JDK 和上面的不一样,第一部分的引用会不同。
保存后关闭 recreateDB.bat 文件,再打开 LoaderJob.olj 文件。在我的系统中,位置在 C:\Shark\sql\mysql\LoaderJob.olj。其实你不需要做什么的,但应注意连接 URL 是否存在,如果你变更了数据库名,也要在这里修改。
最后的步骤是拷贝数据库驱动包到 C:\Shark\lib 目录。我使用 MySQL,所以拷贝相应的 jar 文件到 lib 目录。
现在运行 recreateDB 脚本。如果没有意外,就成功了。如果你发现了错误信息,就再次运行该脚本。再次阅读 “快速测试” 以确定所有步骤都已完成。你可以同时运行两个一样的管理程序来测试多客户端环境。
请注意!引用、转贴本文应注明原译者:Rosen Jiang 以及出处:
http://www.blogjava.net/rosen