Cloud Foundry samples学习笔记 1 :hello-java
来源:互联网 发布:googleearth高程数据 编辑:程序博客网 时间:2024/05/28 18:43
这个样例程序是一个最简单的基于servlet的java web应用,向用户输出一行包含该应用所运行环境的主机地址及端口的欢迎信息。旨在演示如何开发一个java web应用程序并将其部署到cloud foundry之上。
程序repository地址:https://github.com/SpringSource/cloudfoundry-samples/tree/master/hello-java
使用技术:Java,Servlet
程序位于"hello-java"根目录下,其中包含程序的源代码“src”目录及maven构建文件pom.xml。其目录结构如图:
可以看出这就是一个最简单的基于Servlet的java web应用,简单到连web页面文件都没有。
Servlet
HelloServlet.java 内容如下:
package org.cloudfoundry.samples;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/plain");response.setStatus(200);PrintWriter writer = response.getWriter();writer.println("Hello from " + System.getenv("VCAP_APP_HOST") + ":" + System.getenv("VCAP_APP_PORT"));writer.close();}}
在这个Servlet的doGet方法中,仅仅是简单地打印了一行hello信息作为web输出。需要注意的是,以下两处代码与通常的java程序不同
System.getenv("VCAP_APP_HOST")
System.getenv("VCAP_APP_PORT")其分别获取该应用程序运行环境的主机地址及端口两个环境变量。只有当应用程序部署在cloud foundry上时,这两个环境变量才是可用的。
web.xml文件
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name>Hello Java</display-name><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>org.cloudfoundry.samples.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
这就是一个标准的Java web应用所必需的配置文件,在其中对servlet进行配置。相信大家只要对Java Web开发稍有了解,就不会对此感到陌生。
pom.xml文件
我们使用Maven来构建该应用,因此,在程序根目录 hello-java/ 下建立pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.cloudfoundry.samples</groupId> <artifactId>hello-java</artifactId> <version>1.0</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies></project>
同样,该POM文件也极简单。由于本人对Maven不甚了解,能力所限,不敢妄加解说。感兴趣者可参考Maven的相关资料进行学习。
构建应用
前提是已经安装好Maven。
在Linux下,使用cd命令进入应用的根目录,即 "hello-java",并运行命令
mvn clean package
这会在根目录内生成“target”子目录并在其中创建名为“hello-java-1.0.war”的war包。
运行应用
现在开始将构建好的web应用部署到cloud foundry上运行。前提是已经安装好VMC。
在Linux终端内运行以下命令指向目标环境:vmc target api.vcap.me
这里,我指向的是本机的dev_setup,也可指定 api.cloudfoundry.com 将真正的PaaS Cloud Foundry作为目标环境。
之后,进入target目录,运行以下命令进行应用的部署:
vmc push
注意,push之后没有参数则表示默认从当前目录push应用,这也是为何要先进入target目录。
之后,终端窗口会提示一系列问题:
Would you like to deploy from the current directory? [Yn]: yApplication Name: hello-javaDetected a Java Web Application, is this correct? [Yn]: yApplication Deployed URL [hello-java.vcap.me]: Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: 256How many instances? [1]: Bind existing services to 'hello-java'? [yN]: nCreate services to bind to 'hello-java'? [yN]: nWould you like to save this configuration? [yN]: nCreating Application: OKUploading Application: Checking for available resources: OK Packing application: OK Uploading (4K): OK Push Status: OKStaging Application 'hello-java': OK Starting Application 'hello-java': OK从中可以看出,该应用部署之后的访问url是 “hello-java.vcap.me” 。在浏览器中访问此url即可看到Servlet输出的欢迎信息了。
- Cloud Foundry samples学习笔记 1 :hello-java
- Cloud Foundry samples学习笔记 2:hello-spring-mysql
- Cloud Foundry samples学习笔记 3:services
- Cloud Foundry samples学习笔记8: Grails Twitter
- Cloud Foundry samples学习笔记9:模拟股票交易系统stocks
- Cloud Foundry samples学习笔记5:在Cloud Foundry上部署Grails应用程序 petclinic
- Cloud Foundry samples学习笔记6:使用Mongodb和Mysql交叉存储的Cloud Foundry应用
- Cloud Foundry samples学习笔记7:Cloud Foundry上的Spring Integration应用集成
- Cloud Foundry samples学习笔记4:使用rabbitmq协作计算圆周率
- cloud foundry hello world
- Hello World @ Cloud Foundry
- Cloud foundry warden源码学习(1)
- 【Cloud Foundry】Cloud Foundry学习(四)——Service
- 【Cloud Foundry】Could Foundry学习(三)——Router
- Cloud Foundry
- Cloud Foundry
- Cloud Foundry 深入学习二 集群部署
- Cloud foundry warden 源码学习(2)
- Linux android Fragment 中创建onCreateOptionsMenu
- android让你的TabHost滑动起来
- Extjs:把EditorGridPanel表头的全选checkbox去掉
- 主机的名字排序
- Dshow--filter
- Cloud Foundry samples学习笔记 1 :hello-java
- System.Diagnostics命名空间里的Debug类和Trace类的用途
- 羌笛声声胡笳怨,此心长寄天涯远
- 工作感悟
- [求助]socket编程一方突然断开连接,select方法失效问题
- Intent,通过配置Action和Data跳转
- bash 脚本编程二 单双引号
- 深入理解Delphi的消息机制
- 购买开发板开发Android有感