宣佈 dm Server 2.0 M1

工程 | Rob Harrop | 2009 年 4 月 2 日 | ...

dm Server 2.0 的開發工作已經全面展開了一段時間,我很高興地宣佈第一個里程碑版本已可供下載。可從我們的主頁下載。您可以在我的上一篇文章中找到有關此版本和即將釋出的版本中功能的更多資訊。

在這篇部落格文章中,我將概述

  • 2.0 M1 中的新功能
  • 直接從 SVN 構建 dm Server

我們正在使用 Scrum

為了開發 2.0 版本,dm Server 團隊採用了 Scrum 敏捷開發方法。您可以在我們的 JIRA 中檢視我們當前的衝刺和釋出積壓工作。一如既往,dm Server 的開發是由我們使用者的需求驅動的。如果您在積壓工作列表中看到您希望我們實現的專案,請花時間為它投票。同樣,如果您希望 dm Server 能夠實現目前積壓工作列表中未涵蓋的功能,請提出一個新的使用者故事來描述您希望實現的功能。

新增和值得注意

計劃的初步支援

計劃與 PAR 類似,它們都是描述一組捆綁包(bundle)作為應用程式一起載入的方式。不同之處在於,計劃是一個簡單的 XML 檔案,它定義了一組工件,而不是實際包含它們。在此里程碑中,計劃提供了初步支援,使您能夠建立具有與 PAR 檔案相同語義的計劃。

計劃檔案的語法非常簡單。外部的 <plan/> 標籤定義了 nameversion,以及作用域和原子性要求。(在此里程碑中,僅支援同時具有作用域和原子性的計劃)。在 標籤內部至少有一個 標籤,它定義了計劃中工件的 typenameversion


<?xml version="1.0" encoding="UTF-8"?>
<plan name="multi-artifact.plan" version="1.0.0" scoped="true" atomic="true"
        xmlns="http://www.springsource.org/schema/dm-server/plan"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springsource.org/schema/dm-server/plan 
            http://www.springsource.org/schema/dm-server/plan/springsource-dm-server-plan.xsd">

    <artifact type="bundle" name="simple.bundle.one" version="[1.0.0, 2.0.0)"/>
    <artifact type="bundle" name="simple.bundle.two" version="[1.0.0, 2.0.0)"/>
</plan>

要使用計劃,請將構成計劃的捆綁包複製到 $DMS_HOME/repository/bundles/usr 目錄並重新啟動 dm Server。伺服器啟動後,將計劃檔案(帶有 .plan 副檔名)拖放到 $DMS_HOME/pickup 目錄中。這將使計劃以與 PAR 檔案相同的語義進行部署。從 pickup 目錄中刪除計劃檔案將導致計劃解除安裝。

克隆的初步支援

M1 包含了克隆支援的第一階段。有關克隆的概述,請參閱路線圖

仍然有相當多的使用者故事需要實現和一些問題需要解決,但支援克隆的大部分基礎設施已經到位並通過了基本測試。

當一個具有作用域的應用程式(即 PAR 檔案或具有作用域的計劃)由於使用約束而無法解析時,克隆會自動觸發。指定失敗使用約束的捆綁包被克隆到應用程式的作用域中,嘗試解析,並重復此過程直到解析成功或沒有更多候選捆綁包可供克隆,在這種情況下,應用程式的部署將失敗。

克隆也可以透過使用新的“sharing”指令在 import-bundle 或 import-library 上手動觸發。例如


Import-Bundle: org.foo.mybundle;sharing:=clone


Import-Library: org.springframework.spring;sharing:=clone

如果自動或手動克隆導致 Spring DM 擴充套件器(extender)的任何依賴項被克隆,那麼該擴充套件器也會被克隆到應用程式的作用域中。dm Server 的一些直接處理 Spring 和 Spring DM 型別的程式碼需要進行更改,以應對 Spring 捆綁包被克隆的情況。在某些情況下,使用此類型別的程式碼被打包成小型捆綁包,然後被克隆。在其他情況下,程式碼被更改為透過基於 OSGi 藍圖服務草案的(未克隆的)介面分派到此類型別。

共享儲存庫的初步支援

M1 包含了共享儲存庫支援的第一階段。可以透過確保託管儲存庫 PAR 檔案位於 pickup 目錄中,並且 config/hostedRepository.config 中的配置適當來將 dm Server 節點配置為託管共享儲存庫。例如


{
    "my-hosted-repo" : {
        "type" : "external",
        "searchPattern" : "repository/hosted/*"
    }
}

此配置將建立一個名為 my-hosted-repo 的託管儲存庫,其中填充了 repository/hosted 目錄的內容。然後可以透過更新其 config/repository.config 檔案以新增遠端儲存庫條目來將 dm Server 節點配置為訪問此託管儲存庫。例如,假設託管儲存庫節點在 my-host 上執行,並且 Tomcat 配置為監聽 8080 埠


{
    ...

    "remote-repo" : {
        "type" : "remote",
        "uri" : "http://my-host:8080/com.springsource.server.repository/my-hosted-repo",
        "indexRefreshInterval" : 30,
    },
    "repositoryChain" : [
        "bundles-subsystems",
        "bundles-ext",
        "bundles-usr",
        "libraries-ext",
        "libraries-usr",
        "remote-repo"
    ]
}

共享儲存庫以及 dm Server 2.0 的儲存庫支援將在後續部落格文章中詳細介紹。

雜項

  • 啟動期間故障檢測和處理的改進
  • 改進的約束滿足演算法,包括不需要的依賴項的垃圾回收
  • 服務作用域的改進
  • Findbugs 構建支援(以及它檢測到的問題的修復)
  • 各種小幅增強和錯誤修復

Subversion 儲存庫

為了更好地反映 dm Server 的模組化特性,我們已將 dm Server 程式碼庫拆分為多個新的 Subversion 儲存庫,這些儲存庫現已公開可訪問

儲存庫 URL內容
https://anonsvn.springsource.org/svn/dm-server-util 通用實用程式碼
https://anonsvn.springsource.org/svn/dm-server-repository 工件儲存庫
https://anonsvn.springsource.org/svn/dm-server-osgi OSGi 擴充套件和 Equinox 鉤子
https://anonsvn.springsource.org/svn/dm-server-kernel dm Kernel
https://anonsvn.springsource.org/svn/dm-server-servlet Servlet 子系統
https://anonsvn.springsource.org/svn/dm-server-web Web 子系統
https://anonsvn.springsource.org/svn/dm-server 打包
https://anonsvn.springsource.org/svn/dm-server-documentation 文件

每個儲存庫都劃分為一個通用的資料夾結構,儲存庫根目錄有三個目錄。我們以 kernel 的儲存庫為例


svn ls https://anonsvn.springsource.org/svn/dm-server-kernel
development-branches/
main-branches/
tags/

最受關注的是 main-branches 和 tags 目錄。tags 目錄包含核心的每個標記版本(tagged release)的目錄,例如,它目前包含 M1 版本的一個標籤。main-branches 目錄包含我們當前正在開發的每個主要分支(即 release)的目錄。2.0 版本代號為 Jersey(以島嶼命名),如您所見,main-branches 目錄包含 jersey (2.0) 版本的目錄


svn ls https://anonsvn.springsource.org/svn/dm-server-kernel/main-branches
jersey/

從原始碼構建 dm Server

如果您只是想建立 dm Server 安裝二進位制檔案,最簡單的方法是打包現有的二進位制檔案。或者,如果您有興趣修改或新增 dm Server 程式碼庫,也可以從原始碼編譯所有 dm Server 程式碼庫並將其打包成安裝二進位制檔案。

設定

在從原始碼構建 dm Server 之前,您必須在機器上完成以下設定

  • 安裝 Java 6 並配置 JAVA_HOME 環境變數指向它
  • 安裝 Ant 1.7.0 或更高版本
  • 配置 ANT_OPTS 環境變數以提供至少 512MB 的最大堆記憶體,例如 ANT_OPTS=Xmx512m
  • 完成此設定後,您就可以構建 dm Server 了。

    打包現有二進位制檔案

    打包現有的已釋出二進位制檔案很簡單。只需檢出打包儲存庫

    
    svn co https://anonsvn.springsource.org/svn/dm-server/tags/2.0.0.M1
    

    然後進入 build-dm-server 目錄並使用 Ant 執行 jar 和 package 目標

    
    cd 2.0.0.M1/build-dm-server
    ant jar package
    

    構建將下載構成 dm Server 2.0.0.M1 版本的所有捆綁包,並將它們打包成安裝二進位制檔案。您可以在 target/artifacts 目錄中找到此二進位制檔案。

    完全從原始碼構建

    要完全從原始碼構建 dm Server,您需要檢出更多儲存庫,以便將整個程式碼庫放在您的機器上。各種儲存庫檢出到的目錄名稱及其相對位置很重要,因此請使用下面顯示的目錄名稱並從同一目錄執行所有檢出

    
    svn co https://anonsvn.springsource.org/svn/dm-server-util/main-branches/jersey util
    svn co https://anonsvn.springsource.org/svn/dm-server-repository/main-branches/jersey repository
    svn co https://anonsvn.springsource.org/svn/dm-server-osgi/main-branches/jersey osgi-extensions
    svn co https://anonsvn.springsource.org/svn/dm-server-kernel/main-branches/jersey kernel
    svn co https://anonsvn.springsource.org/svn/dm-server-servlet/main-branches/jersey servlet
    svn co https://anonsvn.springsource.org/svn/dm-server-web/main-branches/jersey web
    svn co https://anonsvn.springsource.org/svn/dm-server-documentation/main-branches/jersey documentation
    svn co https://anonsvn.springsource.org/svn/dm-server/main-branches/jersey packaging
    

    接下來,進入 packaging/build-dm-server 目錄

    
    cd packaging/build-dm-server
    

    現在執行 src-build Ant 目標

    
    ant src-build
    

    構建完成後,帶有時間戳的 dm Server 安裝二進位制檔案(以 zip 檔案的形式)現在可以在 target/artifacts 中找到。其名稱將採用 springsource-dm-server-2.0.0.BUILD- 的形式.zip

    更多資源

  • dm Server 論壇
  • 獲取 Spring 新聞通訊

    透過 Spring 新聞通訊保持聯絡

    訂閱

    領先一步

    VMware 提供培訓和認證,助您加速進步。

    瞭解更多

    獲得支援

    Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

    瞭解更多

    即將舉行的活動

    檢視 Spring 社群所有即將舉行的活動。

    檢視所有