Redhat公司推出了OpenShift服务。开发者可以在OpenShift上面尝试新的框架,编程语言或者服务器。当我在学习WebSockets的时候了解到目前Apache Tomcat 8已经支持 JSR356规范。JSR356是Java下WebSockets的标准API规范。尽管Apache Tomcat 7 也支持WebSockets,但是它用的是它自己的专有API。所以我想尝试一下基于JSR356标准支持WebSockets的Apahce Tomcat 8。我决定把它安装在OpenShift上而不是在我本地的开发机上。在这篇文章中,我将会一步一步的展示如何在OpenShift上运行Apche Tomcat 8。 Apache Tomcat 8支持了JavaEE 7的许多特性,比如(Servlet3.1,JSP2.3,Expression language 3.0还有其他tomcat所特有的功能)。目前还没有很多关于Apache Tomcat 8 新特性的文档,但我发现了 这个幻灯片。 预备条件在我们开始创建这个应用以前,我们必须要做一些设置任务:
sudo gem install rhc 如果你已经有了一个,请确保它是最新的一个。要升级rhc,执行下面的命令。 sudo gem update rhc 关于安装rhc命令行工具的额外帮助,请看下面的网页:
第一步:创建应用我们从创建一个OpenShift DIY 应用开始。这个应用叫做tomcat8。DIY策略提供了一个可以尝试和测试不支持事物的沙箱。要了解更多关于DIY的信息,请点击这里。https://www.openshift.com/developers/do-it-yourself $ rhc app create tomcat8 diy 这个命令将会为我们创建一个叫做gear的应用容器,并且初始化好所有所需的SELinux策略(译注:Linux下一种访问控制体系)和cgroup配置(译注:Linux的一种资源控制的机制)。OpenShift还将为你设置一个私有git仓库并且克隆这个仓库到你本地的系统上。最后OpenShift会将程序的DNS公开。该应用程序访问地址是http://tomcat8-domain-name.rhcloud.com/,其中domain-name可以替换为你想要的唯一域名。gear容器预装了Java7环境。 第二步:停掉应用DIY应用默认运行在ruby服务器上。因为我们需要安装Tomcat 8,所以我们需要停掉它。 $ rhc app stop -a tomcat8 RESULT: tomcat8 stopped 第三步:删除不想要的文件Tomcat8 文件夹下的DIY文件夹中有两个文件,一个为简单ruby web服务器的定义文件,另一个为index.html文件。因为我们不需要用到ruby服务器,所以删掉吧。 $ cd tomcat8 $ rm diy/index.html $ rm diy/testrubyserver.rb Windows用户请使用del而不是rm。 启动和停止ruby服务器的脚本在.openshift/action_hooks文件夹下,同样我们也不需要用到,我们将用新的文件取代他们。 $ rm .openshift/action_hooks/start $ rm .openshift/action_hooks/stop $ touch .openshift/action_hooks/start $ touch .openshift/action_hooks/stop 对于Windows用户来说,touch命令只会创建一个空白文本文件。当然你可以这样做,但是请确保文件最终在正确的目录下面。 第四步:提交修改一旦我们删除了并且替换了启动和停止的脚本,我们需要提交这些更新到OpenShift应用,这样这些更新才能被应用。 $ git commit -am "deleted unwanted files and replaced start and stop scripts" $ git push 第五步:SSH连接gear容器,下载Tomcat 8 源码Apache Tomcat 8 现在还处于开发阶段,也没有试用版本,所以我们需要编译tomcat8源码。我们通过SSH连接到gear容器,按照如下的Tomcat git仓库地址将Tomcat源码拷贝下来。每个OpenShift gear容器都预装了git。下面的命令假定你已经在本地机器上进入到(译注:gear容器上)tomcat8的git仓库目录下。 $ rhc ssh -a tomcat8 $ cd $OPENSHIFT_DATA_DIR $ mkdir source $ cd source/ $ git clone https://github.com/apache/tomcat.git $ cd tomcat/ 第六步:构建tomcat8源代码Tomcat8的代码需要Ant去构建源代码。每个OpenShift应用的gear都是使用Ant安装的,所以你可以很容易地编译源代码。不过在我们做这些之前,我们需要做一些辅助工作。我们需要创建一个应该下载的Tomcat8依赖的二进制包存放的目录。这些二进制包是构建Tomcat8必须的。我们将把这些依赖下载到$OPENSHIFT_DATA_DIR/dependencies目录下。 $ cd $OPENSHIFT_DATA_DIR $ mkdir dependencies 接着我们把build.properties.default重命名为build.properties。 $ cd $OPENSHIFT_DATA_DIR $ cd source/tomcat $ mv build.properties.default build.properties 更改build.properties里的base.path属性为依赖文件夹所在位置。 # ----- Default Base Path for Dependent Packages ----- # Please note this path must be absolute, not relative, # as it is referenced with different working directory # contexts by the various build scripts. base.path=../../dependencies 然后我们需要删除部署目标里build-docs的依赖,因为它抛出了一个异常。 <target name="deploy" depends="package, build-tomcat-jdbc" description="Default. Builds a working Tomcat instance"> 我捕捉到的异常下面将提到。如果有人知道如何修补这个异常,那么请在评论部分发布解决方法。我试图按照stackoverflow问题里所提的建议给Ant路径增加ant-nodeps.jar,不过这不能解决这个问题。 [xslt] java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.optional.TraXLiaison 现在,运行ant构建 $ ant clean $ ant 这将花费3-4分钟才能结束。 |