glassfish发布应用

最近,大概在去年年底, GlassFish开源团队发布了GlassFish 4.0 beta 72作为升级版阿伦·古普塔(Arun Gupta)在他的博客上发布了有关GlassFish 4 .0 beta 72的Maven坐标的文章。 该版本意义重大,因为该团队将工件发布到了Maven存储库中。

2013年,我是最新的Java EE 7用户指南的作者 ,因此研究最新的GlassFish非常重要,尤其是因为它是该规范的参考实现。 我想实际研究和调查最新的Java Servlets 3.1,Web套接字和JAX-RS规范在服务器中的表现。

这是我昨晚编写的用于执行GlassFish Embedded应用程序的Gradle构建脚本:

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
apply plugin: 'idea'group = 'com.javaeehandbook.book1'
archivesBaseName = 'ch06-servlets-basic'
version = '1.0'repositories {mavenCentral()maven {url 'https://maven.java.net/content/groups/promoted'}maven {url 'http://repository.jboss.org/nexus/content/groups/public'}
}dependencies {compile 'org.glassfish.main.extras:glassfish-embedded-all:4.0-b72'compile 'javax:javaee-api:7.0-b72'testCompile 'junit:junit:4.10'
}// Override Gradle defaults - a force an exploded JAR view
sourceSets {main {output.resourcesDir = 'build/classes/main'output.classesDir = 'build/classes/main'}test {output.resourcesDir = 'build/classes/test'output.classesDir = 'build/classes/test'}
}task(run, dependsOn: 'classes', type: JavaExec) {description = 'Runs the main application'main = 'je7hb.common.webcontainer.embedded.glassfish.EmbeddedRunner'classpath = sourceSets.main.runtimeClasspath
}

构建脚本的关键是依赖关系的顺序。 我发现glassfish-embedded-all必须首先依赖列表,否则将找不到Hibernate Validator(bean验证器)jar中的ValidationException。 异常消息为'javax.validation.ValidationException: Unable to load Bean Validation provider'

Gradle构建还引用了GlassFish Java存储库,这是第二个关键点。 这是EmbeddedRunner,Java应用程序代码:

package je7hb.common.webcontainer.embedded.glassfish;import org.glassfish.embeddable.*;
import java.io.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;public class EmbeddedRunner {private int port;private AtomicBoolean initialized = new AtomicBoolean();private GlassFish glassfish;public EmbeddedRunner(int port) {this.port = port;}public EmbeddedRunner init() throws Exception{if ( initialized.get() ) {throw new RuntimeException('runner was already initialized');}BootstrapProperties bootstrapProperties = new BootstrapProperties();GlassFishRuntime glassfishRuntime = GlassFishRuntime.bootstrap(bootstrapProperties);GlassFishProperties glassfishProperties = new GlassFishProperties();glassfishProperties.setPort('http-listener', port);String [] paths = System.getProperty('java.class.path').split(File.pathSeparator);for (int j=0; j<paths.length; ++j) {System.out.printf('classpath[%d] = %s\n', j, paths[j]);}glassfish = glassfishRuntime.newGlassFish(glassfishProperties);initialized.set(true);return this;}private void check() {if ( !initialized.get() ) {throw new RuntimeException('runner was not initialised');}}public EmbeddedRunner start() throws Exception{check();glassfish.start();return this;}public EmbeddedRunner stop() throws Exception{check();glassfish.stop();return this;}public static void main(String args[]) throws Exception {EmbeddedRunner runner = new EmbeddedRunner(8080).init().start();Thread.sleep(1000);runner.stop();}
}

该类将嵌入式GlassFish作为无容器构建的开始执行,这是James Ward和其他人创造的一个术语。 此类启动GlassFish,等待一秒钟,然后再次将其关闭。 通过在命令行gradle运行或通过IDE调用,该代码可与Gradle一起使用。 我使用命令gradle想法来生成IDEA项目文件。

这是IntelliJ IDEA 12的示例输出:

/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/bin/java -Didea.launcher.port=7537 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 11.app/bin" -Dfile.encoding=UTF-8 -classpath "/Users/Developer/Documents/IdeaProjects/javaee7-handbook/ch06/servlets-basic/out/production/servlets-basic:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/JObjC.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/Developer/.gradle/caches/artifacts-15/filestore/org.glassfish.main.extras/glassfish-embedded-all/4.0-b72/jar/942b982d5c005806a08843d2a1f411f278c04077/glassfish-embedded-all-4.0-b72.jar:/Users/Developer/.gradle/caches/artifacts-15/filestore/javax/javaee-api/7.0-b72/jar/56d50eaa8d21c2f70394f607efc1aa27c360141d/javaee-api-7.0-b72.jar:/Users/Developer/.gradle/caches/artifacts-15/filestore/javax.activation/activation/1.1/jar/e6cb541461c2834bdea3eb920f1884d1eb508b50/activation-1.1.jar:/Users/Developer/.gradle/caches/artifacts-15/filestore/com.sun.mail/javax.mail/1.4.6-rc1/jar/5c5de8592e570afb595a8be727b484d438b49d69/javax.mail-1.4.6-rc1.jar:/Applications/IntelliJ IDEA 11.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain je7hb.common.webcontainer.embedded.glassfish.EmbeddedRunner
classpath[0] = /Users/Developer/Documents/IdeaProjects/javaee7-handbook/ch06/servlets-basic/out/production/servlets-basic
classpath[1] = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar
classpath[26] = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext/zipfs.jar
classpath[27] = /Users/Developer/.gradle/caches/artifacts-15/filestore/org.glassfish.main.extras/glassfish-embedded-all/4.0-b72/jar/942b982d5c005806a08843d2a1f411f278c04077/glassfish-embedded-all-4.0-b72.jar
classpath[28] = /Users/Developer/.gradle/caches/artifacts-15/filestore/javax/javaee-api/7.0-b72/jar/56d50eaa8d21c2f70394f607efc1aa27c360141d/javaee-api-7.0-b72.jar
classpath[29] = /Users/Developer/.gradle/caches/artifacts-15/filestore/javax.activation/activation/1.1/jar/e6cb541461c2834bdea3eb920f1884d1eb508b50/activation-1.1.jar
classpath[30] = /Users/Developer/.gradle/caches/artifacts-15/filestore/com.sun.mail/javax.mail/1.4.6-rc1/jar/5c5de8592e570afb595a8be727b484d438b49d69/javax.mail-1.4.6-rc1.jar
classpath[31] = /Applications/IntelliJ IDEA 11.app/lib/idea_rt.jar
Found populator: org.glassfish.kernel.embedded.EmbeddedDomainXml
Jan 31, 2013 10:05:12 AM org.glassfish.security.services.impl.authorization.AuthorizationServiceImpl initialize
INFO: Authorization Service has successfully initialized.
Jan 31, 2013 10:05:12 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Alpha1
Jan 31, 2013 10:05:13 AM com.sun.enterprise.config.modularity.StartupConfigBeanOverrider postConstruct
INFO: Starting the config overriding procedure
Jan 31, 2013 10:05:13 AM com.sun.enterprise.config.modularity.StartupConfigBeanOverrider postConstruct
INFO: Finished the config overriding procedure
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Grizzly Framework 2.3 started in: 18ms - bound to [/0.0.0.0:8,080]
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Grizzly Framework 2.3 started in: 3ms - bound to [/0.0.0.0:8,081]
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.admin.adapter.AdminEndpointDecider setGuiContextRoot
INFO: Admin Console Adapter: context root: /admin
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.admin.adapter.AdminEndpointDecider setGuiContextRoot
INFO: Admin Console Adapter: context root: /admin
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.admin.adapter.AdminEndpointDecider setGuiContextRoot
INFO: Admin Console Adapter: context root: /admin
Jan 31, 2013 10:05:13 AM com.sun.enterprise.v3.server.AppServerStartup$StartupActivator awaitCompletion
INFO: Undefined Product Name - define product and version info in config/branding 0.0.0 (0) startup time : Embedded (1,204ms), startup services(856ms), total(2,060ms)
Jan 31, 2013 10:05:13 AM org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread run
INFO: JMXStartupService has disabled JMXConnector system
Jan 31, 2013 10:05:13 AM com.sun.enterprise.connectors.jms.util.JmsRaUtil getInstalledMqVersion
WARNING: RAR7000 : Check for a new version of MQ installation failed : /var/folders/kr/vj5fd5s91g76_t348ndnbtxr0000gn/T/gfembed883899172293116872tmp/lib/install/applications/jmsra/../imqjmsra.rar (No such file or directory):/var/folders/kr/vj5fd5s91g76_t348ndnbtxr0000gn/T/gfembed883899172293116872tmp/lib/install/applications/jmsra/imqjmsra.rar
Jan 31, 2013 10:05:14 AM org.glassfish.admin.mbeanserver.JMXStartupService shutdown
INFO: JMXStartupService and JMXConnectors have been shut down.
JdbcRuntimeExtension, getAllSystemRAResourcesAndPools = [GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool]
Jan 31, 2013 10:05:15 AM com.sun.enterprise.v3.server.AppServerStartup stop
INFO: Shutdown procedure finishedProcess finished with exit code 0

如果操作正确,您应该会在IDE中看到上面的输出。 为了避免类路径加载问题,在JDK 9之前,我们将不得不加倍注意。 我的Java EE 7用户指南书预定于2013年夏季发布。

参考: GlassFish 4由我们的JCG合作伙伴 Peter Pilgrim的博客 Blog 推荐了Build,Gradle和嵌入式应用服务器 。

翻译自: https://www.javacodegeeks.com/2013/02/glassfish-4-promoted-build-gradle-and-embedded-application-server.html

glassfish发布应用

glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器相关推荐

  1. GlassFish 4升级的构建,Gradle和嵌入式应用服务器

    最近,大概在去年年底, GlassFish开源团队发布了GlassFish 4.0 beta 72作为升级版 . 阿伦·古普塔(Arun Gupta)在他的博客上发布了有关GlassFish 4 .0 ...

  2. glassfish发布应用_WildFly 8与GlassFish 4 –选择哪个应用服务器

    glassfish发布应用 自从我上一个博客以来已经有一段时间了. 我显然忙于其他事情,包括我的主要工作. 在对应用服务器的正确选择提出更多疑问之后,是时候再次讨论这个话题并分享我的想法. 该博客上最 ...

  3. glassfish发布应用_Arquillian 1.0.0.Final正式发布! 准备使用GlassFish和WebLogic! 所有虫子死亡!...

    glassfish发布应用 红帽公司和JBoss社区今天宣布的1.0.0.Final发布的Arquillian ,其屡获殊荣的建在Java虚拟机(JVM)运行测试平台. Arquillian大大减少了 ...

  4. 华为新系统鸿蒙升级时间,好消息确定!鸿蒙之后华为全新系统发布,只期待升级尝鲜...

    原标题:好消息确定!鸿蒙之后华为全新系统发布,只期待升级尝鲜 庆幸的是!教主现在已经是地地道道的小花粉了,为什么此处要称"小"呢?其实关键还是因为自己没钱只能买一些华为降价的产品, ...

  5. 构建基本的嵌入式Linux根文件系统

    构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的<Linux全线移植文档>做的.有些东西我也不清楚,只是跟着做,做 ...

  6. 嵌入式Linux设备驱动程序开发指南3(构建Microchip SAMA5D2嵌入式 Linux系统)——读书笔记

    构建Microchip SAMA5D2嵌入式 Linux系统 三.构建Microchip SAMA5D2嵌入式 Linux系统 3.1 获取驱动代码 3.2 配置编译 3.2.1 bootstrap编 ...

  7. Ember 3.9 发布,3.8 升级为 LTS

    Ember 3.9 现已发布,Ember 3.9 项目包括 Ember.js.Ember Data 和 Ember CLI. 这个版本同时开启了所有子项目的 3.10 beta 版本周期. 此外,Em ...

  8. 腾讯云联合信通院等发布标准物模型平台,构建物联网行业通用标准

    12月10日,腾讯云在IoT生态峰会上正式发布并上线针对物联网行业的标准物模型平台.腾讯标准管理中心总监代威表示,将在工业互联网联盟框架下联合各领域合作伙伴,通过标准物模型平台共同构建各类信息模型,让 ...

  9. 一口气发布11项新升级,免费送出1亿元算力:国产深度学习平台PaddlePaddle大更新...

    郭一璞 夏乙 发自 香格里拉 量子位 出品 | 公众号 QbitAI 深度学习框架里的唯一国货PaddlePaddle,集中迎来一大波更新. 百度PaddlePaddle全景图也首次曝光. 在框架核心 ...

最新文章

  1. Docker系列 六. Docker 安装 Redis
  2. 1137. 第 N 个泰波那契数
  3. 如何写出好的Java代码?
  4. 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了
  5. 逐步回归 图像降维matlab,使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构...
  6. 电商场景中的精排服务实践
  7. 012、JVM实战总结:案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?
  8. pycharm导入opencv库失败解决方法
  9. ora-30926:无法在源表中获得一组稳定的行
  10. python isinstance(object, classinfo)
  11. MFC BMP设置Bitmap的分辨率DPI为600点 gdiplus 生成标签
  12. PSP: PMP格式视频制作教程
  13. oracle清除temp表空间,Temp表空间占用长时间不释放,是谁惹的祸
  14. 中国地震断层分布(约495条)
  15. 开源RPC性能比拼测试 : 一不小心我们进了第一梯队
  16. java ppt 转pdf_Java 将PPT转为PNG/PDF/SVG/PPTX
  17. cad角度怎么画_软件CAD | 直线amp;构造线
  18. 雷军又找到了一个蓝海:90分如何成为天猫双11预售最大黑马
  19. 国产开源项目管理软件ZenTao
  20. 老熊一亩三分地里的Oracle工具

热门文章

  1. Java 可重入锁内存可见性分析
  2. auto.js小案例
  3. 定了!对于本周四(7.16日)抽奖活动取消简要说明,新抽奖活动暂定下周三(7.22日)...
  4. Springboot中进行日志打印需要的信息
  5. JS中的基本和引用类型传递的比较
  6. 2017蓝桥杯省赛---java---B---3(承压计算)
  7. 三种获取Class类型的实例的方法
  8. mysql---CV出现的中英文符号错误
  9. MySQL中有外键时数据表的删除方法
  10. 手机app 服务器 网页同步,手机app接入云服务器