从头开始学Shark II

本文介绍从头开始学习Shark II,包括启动引擎和登录的相关内容。需了解Java程序编写、编译和执行,有Shark运行版及管理程序。文中说明了构建实例、启动引擎、修补配置文件的方法,还提及深入钻研Shark时的登录操作和Classpaths相关要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从头开始学Shark II –

启动引擎和登陆

(宏云翻译,Cygnet开源工作流组, 2005-4-15

原文地址:http://shark.objectweb.org/doc/sfs/sharkfromscratch2.html

在这篇文档中,我简单描述实例代码的创建。和以前一样,我不打算涉及和本文不直接相关的所有主题。首先,你必须了解如何去编写、编译和执行Java程序。另外,你需要有一个Shark的运行版,并且能够使用Shark提供的管理程序。

和以前一样,我已经安装了以下程序:

  1. MySQL –我使用 4.0.16 -nt

  2. MySQL Connector – 我使用mysql-connector-java- 3.0.11 -stable-bin.jar

  3. Ant 1.6.x – 不是必需的,但是我提供了一个build file....

  4. Java – 我使用Sun j2sdk version 1.4.2 _04

  5. CVS, Winzip, 等其他需要的软件。

在执行以下命令后,我的Shark build安装在C:/Shark目录下

        make -install

我使用的策略是重复构造一些类(class)来示范如何在Shark中广泛使用。接口是Main method之外的一个命令行。这样做的目的是让新用户可以很容易地开始,并舒适地为Shark进行编码。

文件

你可以阅读这些文件,并且点击指向源码的链接,它是通过Java2html Java2Html ( www.java2html.com )产生的。另外,我已经提供了源码和Ant Build文件。可以在这里找到它们here.

开始使用Shark

开始使用Shark如下所示一样简单:

         Shark.configure(new Properties("Shark.conf")); 

 

也就是说,首先要配置Shark (Shark from Scratch(从头开始学习Shark))。那么,你需要确保所有的Jar文件都是可用的。我们这里构建的代码并不在Shark目录下。

能够启动Shark的最小jar文件集合是(根据我的配置):

  • C:/Shark/lib/sharkkernel-standard.jar

  • C:/Shark/lib/sharkclientapi.jar

  • C:/Shark/lib/sharkcommonapi.jar

  • C:/Shark/lib/sharkinternalapi.jar

  • C:/Shark/lib/sharkxpdl-standard.jar

  • C:/Shark/lib/sharkinstancepersistence-dods.jar

  • C:/Shark/lib/dods-runtime.jar

  • C:/Shark/lib/util.jar

  • C:/Shark/lib/sharkutilities-dods.jar

  • C:/Shark/lib/mysql-connector-java- 3.0.11 -stable-bin.jar

  • C:/Shark/lib/sharkrepositorypersistence-dods.jar

  • C:/Shark/lib/sharkscripting-standard.jar

  • C:/Shark/lib/sharkutilities-map.jar

  • C:/Shark/lib/sharkutilities-misc.jar

  • C:/Shark/lib/xercesImpl.jar

  • C:/Shark/lib/xml-apis.jar

构建实例

因为代码量很小, 所以我把它列到这里,让大家可以深入了解。当然,同时我提供了所有的源代码和一个脚本文件,见here. 这个例子在first 包中可以找到。

运行"ant -p"来看一下目标达成情况。如果你不是使用c:/Shark作为你的安装目录, 你必须在你的构建脚本文件中改变shark.dir的属性值。我们运行的类叫 Simple

在运行之前,让我们来看看代码:

package first;
         
import org.enhydra.shark.Shark;

 

import java.util.Properties;
import java.io.FileInputStream;

 

/**
 * Does nothing more than start the Shark engine.
 */
public class Simple
{
   public static void main(String[] args)
   {
      try
      {
         Properties props = new Properties();
         props.load(new FileInputStream("C://Shark//Shark.conf"));

 

         System.out.println("Enginename from Shark.conf is : " + props.getProperty("enginename"));

 

         // Make SURE every instance of shark that connects to the same database uses a different
         // enginename.
         props.setProperty("enginename", "rross");

 

         Shark.configure(props);

 

      }
      catch (Exception e)
      {
         // It's not like I am going to revive the thing if it crashes...
         e.printStackTrace();
      }
   }
}

代码相当简单,它实现装载properties文件,提供一个不同的引擎名称并把属性对象传递给Shark

启动你的引擎

要运行它,只要在Dos命令中输入"ant runFirst"即可。当执行命令后,要看一下随后的输出

C:/dev/SharkFromScratch>ant runFirst
Buildfile: build.xml

 

runFirst:
     [java] Enginename from Shark.conf is : Shark
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] File dodsConf.xml not exists on path: 'dodsconf' using default insted
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> firstEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

除了一个异常之外,其他都很正常。这个异常是“File dodsConf.xml not exists on path: 'dodsconf' using default insted"。忽略语法和拼写错误,就是说,不能找到dodsConf.xml的备份。如果我在Shark目录下做一个快速搜索,我能看到dodsConf.xml    确实存在。发生的问题是Shark.conf文件有一个缺省的相对路径,当你在包含build文件的目录(我这里是C:/dev/SharkfromScratch)下运行时,Shark能够找到所有的配置文件和其他信息。

修补配置文件

不是编辑硬盘上的Shark.conf文件,而是编辑在启动时传递给Shark引擎的各种属性。这使得我能够更好地控制什么会参与进来,使得我能够在应用(如runsa.bat)中继续使用“官方的(official)”Shark.conf文件,而不用经常改动它。

在交付给Shark之前,我会装载属性文件并预先考虑属性中所有相关文件名称的Shark安装目录。

second.Simple, 你能够看到上述情况。它并不是不可思议的,我已经硬编码了Shark的安装路径,它确实是完成了工作。

运行它,你会得到以下的输出(或者非常相似)

C:/dev/SharkFromScratch>ant runSecond
Buildfile: build.xml

 

runSecond:
     [java] Fixing up Shark config
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> secondEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

正如你看到一样,Shark不再因为找不到dodsConf.xml文件而备受抱怨。在这一点上,我们正确启动了Shark

深入钻研Shark

既然我们能够启动Shark,让我们来看一下我们能够得到什么。Third包是我们第一次尝试构建一个程序。Workflow类提供一个称作init的方法,这个方法包含了到目前为止我们已经做的工作。

登录

下一步, 我们进行登录。实际上,我们要做的是获得一个SharkConnection对象,我们称作它的connect method. 这一代码片段来自login方法。

SharkConnection conn = Shark.getInstance().getSharkConnection();

 

try
{
   conn.connect(userName, password, props.getProperty("enginename"), null);
}

连接命令的第四个参数是’scope’,但是上次检查中我发现它没有和任何东西相连。在提供的build.xml文件中,使用"runThird",我们应改可以看到下面的结果。

C:/dev/SharkFromScratch>ant runThird
Buildfile: build.xml

 

runThird:
     [java] Fixing up Shark config
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> thirdEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

你们可能注意到在登录的时候,系统没有提供新的信息。这很好,因为连接不是空的,且没有异常抛出,因此我们继续进行。

在调用recreateDB之后,这个新的数据库实际上还没有任何用户,注意到这一点是很重要的。如果你还没有这样做,你可以运行Shark Swing应用程序(我这里是C:/Shark/runsa.bat),并且使用用户名”admin”和密码"enhydra"登录。这样就会创建”admin”用户。实际上,如果你用未知的用户名登录Swing应用程序,它就会按照你提供的用户名和密码来创建一个新的用户

Classpaths

在提供的build.xml文件中,所有的目标具有相同的class path,但是正如你看到的那样,我前面已经进行了评议,以便你可以在任何点上,都能够判断需要什么文件。对于一个特定的安装来说,并不是Shark产生的所有文件都是必需的,因此,这会帮助你稍微整理一下你的class path.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值