领先一步
VMware 提供培训和认证,助力您快速进步。
了解更多dm Server 2.0 的开发工作已经全面展开一段时间了,我很高兴地宣布第一个里程碑版本已可供下载。您可以从我们的主页下载。有关此版本和即将发布版本的更多功能信息,请参阅我的上一篇文章。
在这篇博客文章中,我将概述
为了开发 2.0 版本,dm Server 团队采用了 Scrum。您可以在我们的 JIRA 中查看我们当前的冲刺和发布待办事项列表。一如既往,dm Server 的开发是由我们用户的需求驱动的。如果您在待办事项列表中看到您希望我们实现的项目,请花时间投票支持它。同样,如果您希望 dm Server 能够完成待办事项列表中未涵盖的功能,请打开一个新的用户故事来描述您希望实现的功能。
计划文件的语法非常简单。外部的 <plan/> 标签定义了名称 (name) 和版本 (version),以及作用域 (scoping) 和原子性 (atomicity) 要求。(在此里程碑版本中,仅支持既有作用域又具有原子性的计划)。在
<?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 文件或具有作用域的计划)由于 uses 约束而无法解析时,会自动触发克隆。指定失败 uses 约束的捆绑包会被克隆到应用程序的作用域中,然后尝试解析,此过程会重复进行,直到解析成功,或者没有更多可供克隆的候选捆绑包,此时应用程序的部署失败。
也可以在使用新的 "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 blueprint service 草案的(非克隆的)接口分派给这些类型。
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 的通用仓库支持将在后续的博客文章中更详细地描述。
为了更好地反映 dm Server 的模块化特性,我们将 dm Server 代码库拆分成了多个新的 Subversion 仓库,这些仓库现在可以公开访问:
每个仓库都划分成一个通用的文件夹结构,仓库根目录下有三个目录。让我们以内核仓库为例来看看:
svn ls https://anonsvn.springsource.org/svn/dm-server-kernel
development-branches/
main-branches/
tags/
最令人关注的是 main-branches 和 tags 目录。tags 目录包含内核每个标记发布版本对应的目录,例如,目前它包含 M1 发布版本的单一标签。main-branches 目录包含我们当前正在开发的每个主分支(即发布版本)对应的目录。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 了。
打包现有的已发布二进制文件非常简单。只需检出打包仓库即可:
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-