glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器
glassfish發(fā)布應(yīng)用
最近,大概在去年年底, GlassFish開(kāi)源團(tuán)隊(duì)發(fā)布了GlassFish 4.0 beta 72作為升級(jí)版 。 阿倫·古普塔(Arun Gupta)在他的博客上發(fā)布了有關(guān)GlassFish 4 .0 beta 72的Maven坐標(biāo)的文章。 該版本意義重大,因?yàn)樵搱F(tuán)隊(duì)將工件發(fā)布到了Maven存儲(chǔ)庫(kù)中。
2013年,我是最新的Java EE 7用戶指南的作者 ,因此研究最新的GlassFish非常重要,尤其是因?yàn)樗窃撘?guī)范的參考實(shí)現(xiàn)。 我想實(shí)際研究和調(diào)查最新的Java Servlets 3.1,Web套接字和JAX-RS規(guī)范在服務(wù)器中的表現(xiàn)。
這是我昨晚編寫的用于執(zhí)行GlassFish Embedded應(yīng)用程序的Gradle構(gòu)建腳本:
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 }構(gòu)建腳本的關(guān)鍵是依賴關(guān)系的順序。 我發(fā)現(xiàn)glassfish-embedded-all必須首先依賴列表,否則將找不到Hibernate Validator(bean驗(yàn)證器)jar中的ValidationException。 異常消息為'javax.validation.ValidationException: Unable to load Bean Validation provider' 。
Gradle構(gòu)建還引用了GlassFish Java存儲(chǔ)庫(kù),這是第二個(gè)關(guān)鍵點(diǎn)。 這是EmbeddedRunner,Java應(yīng)用程序代碼:
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作為無(wú)容器構(gòu)建的開(kāi)始執(zhí)行,這是James Ward和其他人創(chuàng)造的一個(gè)術(shù)語(yǔ)。 此類啟動(dòng)GlassFish,等待一秒鐘,然后再次將其關(guān)閉。 通過(guò)在命令行g(shù)radle運(yùn)行或通過(guò)IDE調(diào)用,該代碼可與Gradle一起使用。 我使用命令gradle想法來(lái)生成IDEA項(xiàng)目文件。
這是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 如果操作正確,您應(yīng)該會(huì)在IDE中看到上面的輸出。 為了避免類路徑加載問(wèn)題,在JDK 9之前,我們將不得不加倍注意。 我的Java EE 7用戶指南書預(yù)定于2013年夏季發(fā)布。
參考: GlassFish 4由我們的JCG合作伙伴 Peter Pilgrim的博客 Blog 推薦了Build,Gradle和嵌入式應(yīng)用服務(wù)器 。
翻譯自: https://www.javacodegeeks.com/2013/02/glassfish-4-promoted-build-gradle-and-embedded-application-server.html
glassfish發(fā)布應(yīng)用
總結(jié)
以上是生活随笔為你收集整理的glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓为什么越用越卡顿(安卓为什么越用越卡
- 下一篇: 皇室战争4399电脑版(皇室战争4399