Rebundle derby.jar

0

源起

應用程式總是需要地方放資料,這裡用的是 Apache Derby。因為文件提到支援 OSGi,原先預期可以直接使用,因為其內建 EmbeddedActivator,不過無法在 eclipse pde 環境載入,原因不明,於是轉包一個來用。

另一個原因是希望將 jar 包成一個,比較方便 export。

轉包

目前內容和 org.apache.derby.osgi.EmbeddedActivator 一樣如下,只是加個 MANIFEST.MF。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: haha.derby
Bundle-SymbolicName: haha.derby
Bundle-Version: 1.0.0
Bundle-Localization: plugin
Bundle-ClassPath: lib/derby.jar,
 lib/derbytools.jar,
 .
Bundle-Activator: org.apache.derby.osgi.EmbeddedActivator
Import-Package: org.osgi.framework;version="1.4.0" 
Export-Package: org.apache.derby.jdbc

org.apache.derby.osgi.EmbeddedActivator

public final class EmbeddedActivator implements BundleActivator {

  public void start(BundleContext context) {
    new org.apache.derby.jdbc.EmbeddedDriver();
  }

  public void stop(BundleContext context) {
    try {
      DriverManager.getConnection("jdbc:derby:;shutdown=true");
    } catch (SQLException sqle) {
    }
  }
}

Network Server Mode

為了方便測試,將啟動改為 org.apache.derby.drda.NetworkServerControl 來負責, 啟動後預設將開啟 1527 port,可改用 org.apache.derby.jdbc.ClientDriver 來連線。

MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: haha.derby
Bundle-SymbolicName: haha.derby
Bundle-Version: 1.0.0
Bundle-Localization: plugin
Bundle-ClassPath: .,
 lib/derbytools.jar,
 lib/derby.jar,
 lib/derbynet.jar,
 lib/derbyclient.jar
Bundle-Activator: haha.derby.DerbyActivator
Import-Package: org.osgi.framework;version="1.4.0" 
Export-Package: org.apache.derby.jdbc

src/haha/derby/DerbyActivator.java

public void start(BundleContext context) throws Exception {
  server = new NetworkServerControl();
  server.start(null);
}
public void stop(BundleContext context) throws Exception {
  server.shutdown();
}

分開比較方便

每個包都需要功能測試,這次想要將之前的 haha.remix.derby 分兩包, 一個是 haha.remix.derby.server 負責 derby.jar/derbynet.jar/jerbytools.jar, 另一個是 haha.remix.derby.client 負責 derbyclient.jar。

觀察

  1. 資料以檔案夾為單位,例如建立 derbyDB 的話,會建立 derbyDB 目錄來放資料。 沒有設定 derby.system.home 或是直接在 jdbc 中指明位置的話,大概會出現像 是 C:\Downloads\EclipseInstall\eclipse-3.2 當前執行程式的目錄下。

Comments

(leave url/email »)

   Preview comment