Tag: 部署

为什么快照名称的jar文件名中始终有日期? 如何删除它

当我部署jar时,maven总是在其文件名中添加日期,这使得文件名存储库与我本地的文件不同。 如何删除文件名中的日期? 谢谢

部署概念:打包JAR依赖关系,何时以及为何

所以我对Java EE比较陌生,我很难理解Java部署文件何时,何地以及为何与其依赖项打包在一起。 假设我将我的项目构建到myapp.jar中 ,它取决于fizz.jar,buzz.jar和JODA( joda-time-2.0.jar )。 我听说默认的类加载器没有将jar包装在其他jar中,所以我必须假设如果我从Ant调用了一个jar任务,那么将调用默认的类加载器并创建myapp.jar而不使用它们依赖于它。 这是因为心态是在容器或其他系统中部署无mainjar,这些jar将在运行时提供其需求吗? 如果没有,那么myapp.jar如何正常运行? 可执行jar子怎么样? 要满足,这些必须与无mainjar不同,因为它们是独立的单位,对吧? 这意味着他们需要将所有依赖项打包在一起,对吧? 最后但并非最不重要的,那些依赖于依赖于jar子等的jar子的jar子呢? (即,依赖图是巨大的)? 我想所有这些问题可归纳如下: 这是一个非可执行jar背后的想法,它将以这样一种方式运行,它将知道在运行时查找其依赖关系的类路径? (因此不需要与其依赖项打包)? 可执行jar背后的想法是它是一个独立的单元,应该与它的依赖关系? 如果我对上面问题#1的断言是正确的,那么这样的类路径配置是如何发生的? 这些设置是否存储在jar中(例如清单中)? 否则,JRE如何知道在运行时搜索特定jar依赖项的位置? 这些问题的答案实际上将澄清我在Java基础知识方面的许多挂断,因此这里的任何输入/帮助都将受到极大的欢迎! 谢谢

Glassfish作为OSGi容器

我正在评估OSGi容器,并且主题是使用Glassfish来包含我的OSGi应用程序组件。 我的问题是:Glassfish对此有好处吗? 有没有人有这种方式使用它的经验? 背景: – 应用程序不是Java EE应用程序,它是Spring应用程序。 – 我一直在评估Felix + Tomcat。 – 我从未使用过Glassfish,但它有一些我们的操作人员感兴趣的function。 谢谢!

Tomcat上的战争部署需要很长时间

我有一个Grails应用程序,内置到war文件(~30mb)。 当我尝试通过应用程序管理器在Tomcat 6上部署war文件时,部署或无限期挂起需要10分钟。 当它挂起时我可以重新启动Tomcat并且通常会部署应用程序,但有时我必须重复此过程。 我还注意到在部署期间,Java进程最大化了CPU,RAM大约为10-15%。 我对Java很新,所以我不知道这是否正常,但我无法想象它是怎么回事。 有什么我可以做的让这个运行更顺畅/更快? 有没有比Tomcat的应用程序管理器更好的部署方式?

部署WAR文件在Tomcat上给我一个404状态代码?

我对Tomcat很新。 我只是设法构建一个项目并将其导出为WAR文件。 我尝试手动将WAR文件复制到Tomcat文件夹,然后重新启动。 它创建了文件夹结构,但是当我尝试访问应用程序时,我得到了404状态代码。 我尝试通过Tomcat管理面板部署它,但我看到了相同的行为。 我做了什么从根本上错了吗?

在Tomcat中托管Netty Server是否可行/可取?

我们构建基于Netty / NIO的服务,我正在考虑将此服务部署到我们的生产环境中。 我们标准的部署服务的方式是作为WAR,部署在Tomcats中。 当我在这里建议采用相同的方法时,我得到了“不应该做”的呐喊和抱怨,因为Netty和Tomcat都是服务器,“将一台服务器托管在另一台服务器上是没有意义的”。 对我而言,它非常有意义,因为它完全解决了我的部署问题,并使我免于编写其他代码。 为什么这么大“不不”?

部署WAR还是“胖”JAR?

我注意到许多项目(DropWizard,Grails等)开始接受“胖”JAR(使用嵌入式Web服务器,如Jetty或Tomcat)与传统WAR部署的概念。 这两种方法都涉及单个JVM进程(即无论将多少WAR部署到Tomcat,它都是相同的JVM进程)。 在什么情况下,哪种部署方法优于另一种?

Java应用程序的零停机时间部署

我正在尝试构建非常轻量级的解决方案,以便为Java应用程序实现零停机部署。 为简单起见,我们认为我们有两台服务器。 我的解决方案是使用: 在“前端” – 一些负载均衡器(软件) – 我在这里考虑HAProxy。 在“后面” – 两台服务器,都运行Tomcat和已部署的应用程序。 当我们即将部署新版本时 我们使用HAProxy禁用其中一个服务器,因此只有一个服务器(让我们称之为服务器A,运行旧版本)将可用。 在其他服务器上部署新版本(让我们称之为服务器B),运行生产unit testing(如果我们有它们:-)并使用HAProxy启用服务器B,同时禁用服务器A. 现在我们只有一个服务器活动(服务器B,新版本)。 在服务器B上部署新版本,然后重新启用它。 有什么建议怎么改进? 怎么自动化? 任何现成的解决方案或我必须最终使用自己的自定义脚本? 谢谢!

配置Eclipse以将App Engine类预先捆绑到单个JAR中,以便更快地进行预热

在与另一家同时使用App Engine的公司的同事讨论后,他告诉我,他设法使用以下步骤将应用程序预热时间从约15秒减少到约5秒: 配置Eclipse以将编译期间生成的类捆绑到单个JAR文件中。 在App Engine部署期间,将Eclipse配置为上载此单个JAR文件,而不是上载数百(或数千)个单独的Java类。 他认为,在实例热身期间,由于实例只需要加载一个捆绑的JAR文件而不是数千个单独的类,因此预热会明显加快。 对此有何想法或意见? 我肯定想亲自尝试一下,但我没有足够的Eclipse-mojo知道如何配置这些步骤。 有谁知道如何配置Eclipse或Eclipse的Google插件来执行上述步骤? (当然,已部署的应用程序在App Engine中成功运行) 谢谢,

Jenkins:在推荐版本中使用存档工件

我已经将一个工件归档为构建的最后一步,它可以像这样: https : //xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT -r8304-20130807-1507-app.zip 如何在促销过程中轻松访问工件? 请注意,我需要访问特定的版本,而不是最新的成功版本。 升级过程的目标是将工件复制到S3,我们的部署作业将从中进一步处理它。 因此,我可以将构建#52推广到开发(将其复制到特定的S3存储桶),稍后将构建#50推广到生产等等。 理想情况下,我可以在shell脚本中访问工件来重命名文件等。是否有环境变量来访问构建的存档工件,我找不到或应该如何完成? $BUILD_URL和$JOB_URL已经特定于促销流程,并且不会在促销作业的shell脚本中指向构建本身。 使用复制工件插件,我只能复制促销过程中其他构建的工件,我不需要这样做。