<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: Rebundle derby.jar</title>
    <link>http://blog.extremepattern.com/articles/2006/10/31/rebundle-derby-jar</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>Rebundle derby.jar</title>
      <description>&lt;h3&gt;源起&lt;/h3&gt;


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


	&lt;p&gt;另一個原因是希望將 jar 包成一個，比較方便 export。&lt;/p&gt;


	&lt;h3&gt;轉包&lt;/h3&gt;


	&lt;p&gt;目前內容和 org.apache.derby.osgi.EmbeddedActivator 一樣如下，只是加個 &lt;span class="caps"&gt;MANIFEST&lt;/span&gt;.MF。&lt;/p&gt;


&lt;pre&gt;
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
&lt;/pre&gt;

	&lt;p&gt;org.apache.derby.osgi.EmbeddedActivator&lt;/p&gt;


&lt;pre&gt;
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) {
    }
  }
}
&lt;/pre&gt;

	&lt;h3&gt;Network Server Mode&lt;/h3&gt;


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


	&lt;p&gt;&lt;span class="caps"&gt;MANIFEST&lt;/span&gt;.MF&lt;/p&gt;


&lt;pre&gt;
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
&lt;/pre&gt;

	&lt;p&gt;src/haha/derby/DerbyActivator.java&lt;/p&gt;


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

	&lt;h3&gt;分開比較方便&lt;/h3&gt;


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


	&lt;h3&gt;觀察&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;資料以檔案夾為單位，例如建立 derbyDB 的話，會建立 derbyDB 目錄來放資料。
沒有設定 derby.system.home 或是直接在 jdbc 中指明位置的話，大概會出現像
是 C:\Downloads\EclipseInstall\eclipse-3.2 當前執行程式的目錄下。&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Tue, 31 Oct 2006 17:11:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:6d0333bb-822c-4e0f-9153-e24d20985f10</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/10/31/rebundle-derby-jar</link>
      <category>eclipse</category>
      <category>java</category>
    </item>
  </channel>
</rss>
