Tag: 部署

不同的WAR文件,共享资源

假设您有多个应用程序共享相同的代码和大多数其他资源,但外观和感觉有所不同,某些标签更改等等(想想品牌推广)。 如果每个Web应用程序都要使用自己的WAR文件,那么您将在何处放置共享资源? 我已经使用类路径来共享类和属性文件。 但是javascript和css文件怎么样? 是创建和部署一个额外WAR文件的最佳方法,该文件将为这些共享文件提供其他应用程序所需的文件吗? 我还想到了一个构建脚本,它做了一些魔术并且从一个共同的源代码中喷出了(稍微)不同的WAR,但是我不喜欢它,因为当你需要构建/测试/运行单个应用程序时它只是不必要的复杂化。 任何其他提示和技巧将不胜感激。

如何创建一个在我的应用程序运行时一直运行的线程

编辑:我现在确定问题与while (true)循环有关,因为我已经注释了所有其他命令并且应用程序在没有附加exception的情况下进行部署。 我不确定它有多重要,但我的ServletContextListener实现如下所示: public class BidPushService implements ServletContextListener{ public void contextInitialized(ServletContextEvent sce) { //Some init code not relevant, omitted for clarity BidPushThread t= new BidPushThread(); t.setServletContext(sce.getServletContext()); t.run(); } 所以现在线程在部署应用程序时运行但由于while循环被注释它没有任何实际意义。 当我的应用程序加载时,我需要在后台运行一个线程,并且不断(没有超时)检查某个队列中的对象。 当然,一旦有了对象,它就“照顾它们”,然后继续检查队列。 目前,我正在实现ServletContextListener接口,并在应用程序加载时调用。 在其中,我做了一些维护工作并启动了一个我从java.lang.Threadinheritance的线程。 这是我的问题开始的地方(或者我认为)。 在我的run()方法中,我有一个 while (true) { //some code which doesn’t put the thread to sleep ever } 当我尝试将我的应用程序部署到服务器时,我得到一个java.util.concurrent.TimeOutException 。 我究竟做错了什么? 我不能有一个始终运行的线程吗? 删除应用程序后,该线程将由ServletContextListener的相应事件停止。 我确实需要能够毫不拖延地检查队列的东西。 […]

在容器tomcat服务器上更改已部署(Spring Boot)战争的上下文路径。 所以它不是demo-0.01-SNAPSHOT

我尝试使用许多配置部署我的站点,以使其从正在部署的战争名称进行更改。 有没有办法轻松做到这一点。 部署将在一个tomcat坐在其他地方。 例如bitnami实例 我在application.properties中尝试了各种设置组合,但没有任何区别: server.servlet.context-path=/a server.servlet.path=/b spring.webservices.path=/c server.contextPath=/m 战争称为demo-0.0.01-SNAPSHOT.war,当放入webapps目录时,它会创建相同的命名目录,然后该站点具有/demo-0.0.01-SNAPSHOT路径。 我认为Spring Boot的日子现在很容易,但像我这样的傻瓜还没有解决。 或者人们只是使用tomcats部署嵌入式版本并立即运行它们? (顺便说一句,我也尝试过root.xml,没有运气……除非我在我的Windows机箱上做错了,先在我的开发盒上进行测试,然后在linux上进行部署) 任何帮助,将不胜感激。 谢谢

Jetty启动延迟

我想弄清楚在Jetty启动时会造成1分钟延迟的原因。 是配置问题,我的应用程序还是其他什么? 我在服务器上安装了Jetty 7(jetty-7.0.1.v20091125,2009年11月25日),我将一个45MB的ROOT.war文件部署到webapps目录中。 这是Jetty中唯一配置的webapp。 然后我用命令启动Jetty: java -DSTOP.PORT=8079 -DSTOP.KEY=mystopkey -Denv=stage -jar start.jar etc/jetty-logging.xml etc/jetty.xml & 这样做后我得到了两行输出: 2010-03-07 14:20:06.642:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse.jetty.util.log.StdErrLog 2010-03-07 14:20:06.710:INFO::Redirecting stderr/stdout to /home/zing/jetty-distribution-7.0.1.v20091125/logs/2010_03_07.stderrout.log 当我按下回车键时,我得到了我的命令提示符。 查看日志文件(logs / 2010_03_07.stderrout.log),我在开头看到以下内容: 2010-03-07 14:08:50.396:INFO::jetty-7.0.1.v20091125 2010-03-07 14:08:50.495:INFO::Extract jar:file:/home/zing/jetty-distribution-7.0.1.v20091125/webapps/ROOT.war!/ to /tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp 2010-03-07 14:08:52.599:INFO::NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet 2010-03-07 14:09:51.379:INFO::Set web app root system property: […]

如何在Wildfly中设置两只耳朵的部署顺序

关于Wildfly 8.1中两个应用程序的部署顺序,我遇到了一些问题。 问题是app2.ear某些模块依赖于app1.ear的模块,但app1.ear是在app2.ear之后app2.ear 。 我试图像这样为app1指定一个依赖项: 但没有运气, app1.ear无法部署此错误: {“JBAS014671:服务失败”…由以下原因引起:org.jboss.modules.ModuleNotFoundException:app2.ear:main“}} 任何想法是否可能以及如何点缀它? Thx提前。

在jBoss AS中创建模块

我正在使用jBoss AS 7发布我的各种项目,并且所有项目都使用Jersey API,因此我不想在每个项目中部署它,而是想为它创建一个模块。 为此,我创建了文件夹JBOSS_HOME \ modules \ com \ sun \ Jersey \ main,在这个文件夹中我放置了Jersey jar和文件module.xml: 为了防止使用jBoss JAX-RS,我从文件JBOSS_HOME \ standalone \ standalone.xml中删除了以下行: 在MyProjectEAR \ META-INF文件夹中,我创建了具有以下结构的jboss-deployment-structure.xml文件: 我的MyProject \ webContent \ web.xml文件是这样的: MyProject Jersey Servlet com.sun.jersey.spi.container.servlet.ServletContainer javax.ws.rs.Application com.MyProject.service.REST_Application 1 Jersey Servlet /jaxrs/* 出现在MyProject \ webContent \ META-INF \ MANIFEST.MF的我的清单文件是这样的: Manifest-Version: 1.0 Class-Path: 当我尝试部署项目时,我收到以下错误: 12:12:11,804 INFO [org.jboss.as.server.deployment] (MSC […]

Eclipse + Maven +动态Web项目 – > Maven覆盖部署程序集

概要 在Eclipse中,当我“Maven->更新项目配置”“Maven Dependencies”从我的项目的“部署程序集”中删除时。 细节 我从一个预配置的Eclipse项目开始:File-> New-> Dynamic Web Project-> JavaServer Face v2.0 Project。 为了删除“魔法”,我将其转换为Maven项目:Configure-> Convert to Maven project。 pom.xml包含以下内容: jsf-facelets-tutorial org.apache.maven.plugins maven-war-plugin WebContent/WEB-INF/web.xml org.apache.maven.plugins maven-compiler-plugin 1.6 1.6 javax.el el-api 1.0 provided junit junit 4.0 test org.apache.myfaces.core myfaces-api 2.0.5 compile org.apache.myfaces.core myfaces-impl 2.0.5 runtime 然后,为了确保在部署之前将Maven依赖项复制到“WEB-INF / lib /”,我将它们添加到项目的“部署程序集”中:项目属性 – >部署程序集。 有关更多详细信息,请参阅此问题: Eclipse + Maven + JavaServer […]

如何使用maven插件tomcat7:运行多个上下文(WAR)?

我一直在使用mvn tomcat7-maven-plugin:run -am -pl :foo成功地在Tomcat中一次只运行一个项目, 如此处所示 。 现在我想让多个模块在同一个端口下运行但不同的上下文。 例如,我想: / => foo.war /bar => bar.war 这是我一直在使用的示例pom.xml代码段: org.apache.tomcat.maven tomcat7-maven-plugin 2.0-SNAPSHOT / 8080 true true ${project.build.directory}/${project.build.finalName}/ ${project.groupId} bar ${project.version} war tomcat apache.snapshots Apache Snapshots http://repository.apache.org/content/groups/snapshots-group/ false true 这是可能的tomcat7-maven-plugin:run插件? 我很难找到正确的语法来让它发挥得很好。 当我运行maven命令来运行它时,它只运行它在项目层次结构中找到的第一个命令。 如果我使用true运行它们,或者显然是从不同的终端运行它们,那么我得到“java.net.BindException:Address in in use:8080”。

JBoss:EAR中的WAR文件在类路径上找不到JAR库

我在JBoss 4.3-eap上使用捆绑的战争,jar和配置文件(.properties文件)部署耳朵时遇到问题。 这是我的耳结构: +app.ear +lib *.jar libraries that the war’s use +classes *.properties and other configuration files +META-INF application.xml jbos-app.xml app.war app2.war appn.war 我的jboss-app.xml中有以下内容: app.startup.JbossStartUpServer:service=JbossStartUpService 我的application.xml看起来像这样: App>/display-name> TheApp>/description> <!– lib/core.jar lib/tag.jar –> app.war / app2.war /app2 appn.war /appn users users lib 基本上,在部署耳朵时,我遇到了一个问题,其中我的一场战争无法在core.jar文件中找到一个类( java.lang.NoClassDefFoundErro r)。 我认为这是因为战争没有找到这个库,即使它在lib文件夹/类路径中。 如果我尝试取消注释前两个模块以添加第一方库( core.jar和tag.jar ),则突然无法再找到属性文件(目前它们位于lib/classes ,因此,我希望无论如何,它们都被类加载器拾取。理想情况下,我想将类放在它自己的目录中,并将它分别添加到类路径中,但是现在我只是想让它工作)。 我已经尝试了一些其他的东西,包括手动将core.jar添加到war的manifest.mf文件中,在jboss-web.deployer下的jboss-web.deployer jboss-service.xml文件UseJBossWebLoader更改为true,以及上面的各种组合,为no成功。 我要么丢失classpath( lib文件夹)中的classes目录,要么没有拾取我的属性文件,或者war无法从jar访问正确的类。 我认为必须有一些错误的配置,虽然我已经尝试过阅读JBoss进行EAR部署和类加载的方式,但我似乎无法将其改编为我当前的设置。 任何建议将不胜感激。 […]

如何使Java应用程序自我更新?

问题 :我有一个独立的Java应用程序(以下称为“代理”),它作为内部公司服务器上的服务运行。 它充当某些中央服务器的远程代理。 随着代理在更多地方部署,管理它们变得更加复杂。 具体来说:推送更新很痛苦,因为它是一个相当手动的过程,并且访问日志和有关运行代理的环境的其他信息是有问题的,这使得调试变得困难。 正在讨论的服务器无头且无人值守,这意味着这必须是一个完全自动化的过程,无需人工干预,因此Java Web Start不是一个可行的解决方案 。 建议的解决方案 :定期将代理电话置于家中(到中央服务器)以提供代理状态并检查更新。 我对这个问题的其他建议解决方案持开放态度,但我已经有了一个关于“状态和自我更新”想法的工作原型,这就是这个问题的重点。 我想出的实际上是一个单独的项目,充当代理的包装器。 包装器通过HTTP定期调用中央服务器以检查代理的更新版本。 找到更新后,它会下载新版本,关闭正在运行的代理,然后启动新版本。 如果这似乎是一个奇怪或迂回的解决方案,这里有一些值得注意的其他考虑/约束: 当包装器获得新版本的代理时,可能会有新的JAR依赖关系,这意味着类路径发生了变化,这意味着我可能想要生成一个单独的Java进程,而不是摆弄ClassLoaders并冒着永久性内存泄漏的风险,需要人工干预 – 正是我想要摆脱的。 这就是为什么我最终得到一个单独的“包装”过程来管理我的原型中的代理更新。 部署代理程序的某些服务器受资源限制,因此任何解决方案都需要CPU和内存使用率较低。 这让我想要一个不涉及启动新JVM的解决方案,并且不需要单独的包装器进程。 代理已经部署到Windows和RHEL服务器上,因此解决方案必须是跨平台的,尽管在批处理和bash脚本中复制合理数量的进程以使事情滚动时我没有问题。 问题 :如上所述,我想知道如何制作自我更新的Java应用程序。 更具体地说,是否有任何框架/库可以帮助我解决这个问题? 在这方面有经验的人能给我一些指示吗?