在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】
前言
本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发。采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优秀的guide文章,于是按照guide成功完成了一个RESTful的demo。官方文档非常简洁,给我带来了很大的帮助,于是翻译之,希望对其他不愿意看原文的人有所帮助。由于水平有限,读者发现错误请指正,谢谢。
原文地址:
准备工作
- 确定你正在使用的IDE是Intellij Ultimate版本。
- 安装jdk,版本为1.8或更高。
- 下载GlassFish Appcation Server,版本为3.0.1或者更高。
- 确定浏览器在你的电脑上是可用的。
在Intellij中配置GlassFish server
- 打开Settings/Preferences对话框(Windows或Linux 平台通过快捷ctrl+alt+s或者选择File|Settings,OS X选择Intellij IDEA|Preferences),并且点击Build,Execution,Deployment下的Applicaton Servers。
- 打开Application Servers页面,点击中间栏上部的“+”图标从列表中选择GlassFish Server。
- 在右边栏,GlassFish Home一栏指定GlassFish Server安装文件夹。手动输入路劲或者在点击“...”弹出的对话框中选择安装文件夹。Intellij IDEA检测application server的版本并且自动填充到Name一栏。其他的区域都是自动填充或者可选的,此时点击OK。
配置JDK
- 按ctrl+shift+alt+s或者选择主菜单中的File|Project Structure。
- 在Project Structure对话框中,选择Platform Settins下的SDKs。
- 在打开的SDKs上点击中间栏上部的“+”并且选择JDK。
- 在右边栏指定JDK安装文件夹。手动输入路劲或者点击“...”弹出对话框选择安装文件夹。Intellij IDEA检测JDK的版本并且自动填充到Name一栏。
其他tabs的所有必填项会被自动填充上,此时点击OK。
创建项目
- 在欢迎界面点击Create New Project,或者在主菜单中选择File|New|Project。打开New Project向导。
- 首先,Project Category and Options页面向导:第二,向导中的Project Name and Location页面,指定你新项目的名字。点击Finish并且等到直到Intellij创建好项目。
- 在左边栏选择Java Enterprise。
- 从Project SDK列表选择使用的JDK。
- 从Application Server下拉列表中选择GlassFish4.1.1。
- 从JavaEE Version下拉列表中选择JavaEE7。
- 在Additional Libraries and Frameworks区域选中Web Application和RESTful Web Service复选框。
- 在Additional Libraries and Frameworks列表下发选择Download选项。这个区域只有在你选择了Web之后才会显示。
- 点击Next。
第二,向导中的Project Name and Location页面,指定你新项目的名字。点击Finish并且等到直到Intellij创建好项目。
探索项目结构
当项目已经创建好,在Project视图下你可以看到类似这样的结构:

(略过目录结构介绍)
开发源码
我的Hello World程序将包含一个资源类HelloWorld.java和一个配置类MyApplication。这个程序的功能仅仅是输出一个文本Hello World。
- 在src文件夹创建HelloWorld.java类:
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; // The Java class will be hosted at the URI path "/helloworld" @Path("/helloworld") public class HelloWorld { // The Java method will process HTTP GET requests @GET // The Java method will produce content identified by the MIME Media type "text/plain" @Produces("text/plain") public String getClichedMessage() { // Return some cliched textual content return "Hello World"; } }
- 在src文件夹创建MyApplication.java类:
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; //Defines the base URI for all resource URIs. @ApplicationPath("/") //The java class declares root resource and provider classes public class MyApplication extends Application{ //The method returns a non-empty collection with classes, that must be included in the published JAX-RS application @Override public Set<Class<?>> getClasses() { HashSet h = new HashSet<Class<?>>(); h.add( HelloWorld.class ); return h; } }
检查生成的artifact配置
除了构建一个具体的RESTful项目结构以外,Intellij IDEA也为我们配置了artifact。
IntelliJ IDEA中的artifact可能意味着以下之一:
- 一个artifact配置即项目输出的规范。
- 根据这样的规格(配置)生成的实际输出。
让我们看一下这个配置
- 在主菜单按ctrl+shift+alt+s或者选择File|Project Structure打开Project Structure对话框。
- 在Proj Settings下选择Artifacts。可用的artifact配置显示在中间栏的“+”和“-”下面。当前只有一个配置rest_glassfish_hello_world:war exploded,它是一个解压缩的Web应用程序存档(WAR),一种准备部署到Web服务器上的目录结构。
- Artifact设置显示在右边栏的对话框中:
IntelliJ IDEA已经填写了所有必填项,不需要我们进行更改,所以只需单击取消离开对话框。
探索并完成运行配置
在IntelliJ IDEA中,根据专用的run configuration启动任何应用程序。在项目创建期间,我们已经指定GlassFish Server作为运行应用程序的应用程序服务器。基于此选择和代码中的注释,IntelliJ IDEA创建了运行配置并填充了几乎所有必填项。
- 选择主菜单的Run|Edit Configuration或者点击Shif+Alt+F10并在弹出菜单中选择Edit Configuration。
- 在打开的Edit Configuration对话框中,展开GlassFish Server节点并且点击GlassFish4.1.1。 右边栏显示自动生成的运行配置的设置。

- Application Server字段显示GlassFish4.1.1,它是在项目创建期间选择的GlassFish Server安装的。Name字段也显示GlassFish4.1.1,在指定应用服务器后IntelliJ IDEA已自动命名生成的配置。
- 在Open brower区域,After launch复选框已经被选中,所以具有应用程序输出的页面将自动打开。在下面的文本区,我们需要指定被打开页面的URL地址。在我们的例子中是http://localhost:8080/rest_glassfish_hello_world_war_exploded/helloworld。
- 为了rest_glassfish_hello_world:war exploded自动部署启动运行配置,该artifact必须被标记为部署。如果你已经成功完成项目创建步骤,该artifact会被标记为自动部署,否则Intellij IDEA显示警告No artifacts marked for deployment和一个Fix按钮。

- 当你点击Fix时,Intellij IDEA打开Deployment栏,其中rest_glassfish_hello_world:war exploded被添加到Deploy on the server starup列表中。
所有的其他字段会被自动填充上或是可选项,所以点击OK保存运行配置。
运行应用程序
点击工具栏上的,之后:
- Intellij IDEA编译你的源码并且构建一个应用程序。
- Run Tool Window打开。 IntelliJ IDEA启动服务器并在其上部署。
- 最后,你默认的web浏览器启动,然后你看到应用程序输出的Hello World。
在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】的更多相关文章
- 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- PyCharm下创建并运行我们的第一个Django项目
PyCharm下创建并运行我们的第一个Django项目 准备工作: 假设读者已经安装好python 2x或3x,以及安装好Django,以及Pycharm 1. 创建一个新的工程 第一次运行Pycha ...
- MEAN Stack:创建RESTful web service
本文在个人博客上的地址为URL,欢迎品尝. 前段时间做了DTREE项目中的前后端数据存储功能,在原有的ngController上进行HTTP请求,后端接受到请求后再存储到mongoDB上.现将学习所得 ...
- 使用JAX-RS创建RESTful Web Service
guice resteasy http://www.cnblogs.com/ydxblog/p/7891224.html http://blog.csdn.net/withiter/article/d ...
- 使用Java创建RESTful Web Service
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
- 使用Java创建RESTful Web Service(转)
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
- spring3创建RESTFul Web Service
spring 3支持创建RESTFul Web Service,使用起来非常简单.不外乎一个@ResponseBody的问题. 例如:后台controller: 做一个JSP页面,使用ajax获取数据 ...
- 如何创建一个RESTful WCF Service
原创地址:http://www.cnblogs.com/jfzhu/p/4044813.html 转载请注明出处 (一)web.config文件 要创建REST WCF Service,endpoin ...
- 1903021121—刘明伟—Java第三周作业—学习在eclipse上创建并运行java程序
项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第三周作业 作业要求 每道题要有题目,代码,截图 扩展阅读 eclipse如何创建java程序 java语言基础(上) 扩展阅读心得: 想 ...
随机推荐
- iOS开发——浅谈构架与用户体验
工作不是千篇一律的重复,从中寻找乐趣才是我们应该做的. 作为一名码农,做过几个项目,每次做项目的时候都会自己构思,如果完全是我自己设计,会怎么去设计?心里一直没有满意的答案,不管怎么布局,好像都感觉差 ...
- pcommlite串口通讯库使用
MFC下串口编程使用最多的两种方法是读取注册表和使用mscomm组件,都有着或多或少的缺陷,调用系统SDK比较麻烦,而MSCOMm组件最多支持16个串口,串口号大于16的时候无法打开,遇到这种情况,可 ...
- STM32F412应用开发笔记之八:迪文串口屏显示驱动
迪文的显示屏使用起来比较方便,其使用串口通讯,即可支持RS232,又可以支持TTL电平.在NUCLEO-F412ZG实验板上,USART2已经引到了CN9上,我们就利用USART2来实现与迪文串口屏的 ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
- Makefile — 基础
参考: 跟我一起写 Makefile GNU make <GNU+Make项目管理(第三版)> 1.Makefile用途 使用GNU Make工具来管理程序是每个Linux工程师必须掌握的 ...
- uWSGI参考资料(1.0版本的配置选项列表)
Reference: http://blog.csdn.net/kevin6216/article/details/15378617 uWSGI参考资料(1.0版本的配置选项列表) 下面的内容包含了大 ...
- 【MySQL】容器集群支持数据库实践
京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例.架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理.为描述方便,京东容器化数据库系统 ...
- Unity游戏开发——自动为动画剪辑添加事件 之 最后几帧的事件不能被调用的问题
最近在做一个根据配置表自动生成动画剪辑clip以及controller的功能.做法是根据配置表配置的动作以及每个动作的关键帧,自动为每个clip添加事件.这样做可以把动画的事件处理在游戏运行之前就计算 ...
- HDU -2100-Lovekey
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2100 这题开始一直想着先把26进制转换成10进制,在转换成26进制,又200个字符因而行不通, 直接卡 ...
- #DP# ----- OpenJudge数字组合
OpenJudge 2985:数字组合 总时间限制:1000ms 内存限制: 65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3, ...






