Nav*_*Nav 18 deployment glassfish java-ee glassfish-3
将我的Web项目(或耳朵项目)部署到远程服务器和glassfish的最佳方法是什么?
如何使用netbeans为此目的创建的ant-deploy.xml和build-impl.xml?
使用autodeploy文件夹并单独将sun-resources.xml添加到GF或使用ant和....
你能一步一步解释我吗?
问候
Pas*_*ent 24
那么,您可以通过管理控制台手动部署您的应用程序.
或者您可以使用该asadmin
命令.最简单的远程部署看起来像:
asadmin deploy --user=<adminuser> --host=<hostname> <path to jar/war/ear>
Run Code Online (Sandbox Code Playgroud)
这可能是shell脚本,或包装在Ant或Maven中.
或者你可以使用更专业的工具(Ant Task,maven glassfish插件,maven asadmin插件,Cargo).
这一切都取决于你的背景,没有单一的答案,有很多可能性.如果您不知道要查找的内容,只需使用NetBeans创建的Ant构建脚本.
Oli*_*hti 17
使用以下组合:
要回答这个问题,从更广泛的角度考虑并考虑整个开发/部署生命周期是有用的.Glassfish中.war或.ear存档的实际部署只是循环的一个步骤.
如果您想要真正有效,则需要考虑工具和实践的组合,以自动构建和部署软件应用程序.如果您在开发人员机器,持续集成机器,QA机器和生产机器的"真实世界"环境中工作,则尤其如此.
我将在以下段落中详细说明这些项目.特别是,我将解释为什么我认为今天由maven驱动的自定义shell脚本比社区中提供的glassfish maven插件更好.
对于许多进行Java开发的人来说,maven是一个众所周知的工具.对于其他人来说,这是一个非常简短的介绍.maven的目标是自动构建软件工件.它是一个框架(与面向对象框架的意义相同),这意味着:
从本质上讲,当你使用maven时,你会描述你正在构建什么样的软件工件(它是.jar,它是.war,它是一个Android应用程序,等等).默认情况下,maven希望在特定位置查找源文件,测试文件和资源.默认情况下,maven知道构建软件需要经历不同的阶段:编译,单元测试,打包,部署,集成测试,文档生成等.
maven为您做的另一件事(通常是使用该工具的第一个原因)是依赖管理.Maven指定了一种识别库(具有名称和版本)的方法,这些库通过存储库提供(有公共存储库,全局存储库和私有存储库).使用maven,您可以指定"我依赖于magiglib 1.2.2版"之类的内容.当您要求maven进行构建时,它将自动获取lib,将其存储在本地存储库中并将其用于构造和打包.无需处理.jar文件的手动传输,没有引入错误的风险,因为不同开发人员或不同阶段使用相同库的不同版本.
最后但并非最不重要的是,maven提供了根据目标部署机器定制软件结构的能力.考虑以下用例:
在开发过程中,认为每个开发人员可能有不同的安装(mysql可能不会在同一个TCP端口上侦听,glassfish可能不会安装在同一目录中,密码会有所不同等).
开发机器明显不同于持续集成环境,后者本身与QA或生产环境不同(再次,只考虑网络,文件系统,凭证).
Maven通过变量,配置文件和资源过滤的组合支持这些用例:
Maven是一个非常强大的工具,因此具有学习曲线.如果您使用Netbeans,您实际上可以通过几次点击创建一个maven驱动的项目,并从基本功能中受益(例如,依赖关系管理).对于高级主题,可以获得非常好的文档.我不会在这里详细介绍.
一旦你理解了maven的价值并决定使用它,下一个问题是如何使用它来将.war或.ear存档实际部署到Glassfish(本地或远程).这是您有多种选择的地方,多年来我们学到了很多东西(我们已经使用maven与glassfish多年了).
你可以做的第一件事就是使用一个glassfish maven插件.有不同的插件可用.它们具有完全不同的能力和不同的支持水平.事实证明,实际上不再支持最强大的插件,并且不能与开箱即用的Glassfish 3一起使用.这个插件很有意思,因为它不仅可以将档案部署到Glassfish中,还可以创建资源(jdbc池,jms队列等).它还可以动态创建glassfish域(对于运行集成测试非常有用,并确保使用新域).无论如何,新的插件(在产品文档中描述)并不那么强大,而且完全专注于部署任务.
在我们多年来创建和构建的构建系统中,我们通过将glassfish maven插件与配置文件和资源过滤相结合,实现了大量的控制和灵活性.该解决方案有效,但非常复杂(我们的pom.xml和settings.xml已经增长很多并且变得很重).
所以,如果我从头开始建立一个新的构建系统,我可能会做一些不同的事情.如果你看一下glassfish maven插件的代码,你会发现它们几乎是Glassfish提供的asadmin命令行工具的包装器(这是因为asadmin的参数和行为已经从一个glassfish版本变为另一个maven插件已被破坏).
我会做的是:
编写一组shell脚本来创建glassfish 域,创建资源(jdbc,jms等),部署 .war和.ear.脚本将使用asadmin与glassfish交互(可以在本地和远程使用asadmin );
在这些脚本中嵌入maven变量,并使用资源过滤动态创建特定于环境的脚本版本 ;
使用maven exec插件在 maven构建周期的不同阶段运行脚本(集成测试,运行,自定义目标等).
Yus*_* K. 10
您可以使用ant任务将war文件部署到glassfish-V3;
Build.xml内容;
<target name="deploy"
description="deploys application to glassfish">
<exec failonerror="true" executable="cmd">
<arg value="/c" />
<arg value="asadmin --user ${gfUser} --passwordfile ${gfPassFile} --host ${host} deploy build/${war}" />
</exec>
</target>
Run Code Online (Sandbox Code Playgroud)
小智 5
更多os独立的部署应用程序的方式:
<presetdef name="asadmin">
<java jar="${glassfish.home}/modules/admin-cli.jar" fork="true" jvm="${java.home}/bin/java" >
<arg line="--port ${glassfish.admin.port}" />
</java>
</presetdef>
<target name="deploy">
<asadmin failonerror="true">
<arg value="deploy" />
<arg value="--force=true" />
<arg value="${ear.file}" />
</asadmin>
</target>
Run Code Online (Sandbox Code Playgroud)
colud使用asadmin预设任何asadmin任务...