在jboss中部署可执行jar, deploy executable jar in jboss
首先,题目是个伪命题, jboss容器是不支持直接部署可执行jar包的,jar只会被加载当作lib对待。这里提供了一个小的变通方案。
今天我遇到个问题,把我们的项目中的监控模块独立成一个小项目部署,监控逻辑比较简单,这个小项目的实现只依赖了常用的一些jar包和spring jdbcTemplate.
所以我一直不想把部署搞的太复杂,直接写main()入口部署jar是最理想的。 但如上,jboss不支持。
只能改造成web项目打war包,在纠结用哪个框架实现servet 监听及启动入口时, 灵机一动,为何不自己写一个servletlistener.
下面开始:把项目改成web结构不必多说, 之后开始实现一个servlet listener, 很简单,只要继承ServletContextListener就像, 然后把启动代码贴到contextInitialized里面。
public class StartMonitor implements ServletContextListener{ 
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		//这里写原来executable jar的main方法逻辑
	}
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
	}
}
在web.xml中配置上listener., 一切搞定。 打成war包就可运行了
<web-app>
<listener>
    <listener-class>
          ${pakagePath}.StartMonitor
     </listener-class>
  </listener>
</web-app>
回头看,其实这个解决方案很平常, 只是由于我对servlet容器的运行原理一知半解,总是觉得运行一个web必须离不开spring Listener那种类似的东西,要引入许多组件等等。 但实质上,servlet本身非常简洁? 只是提供了一系列标准接口供第三方扩展(比如listener),任何人都可以随意按需实现这些接口。
更进一步,在web中常用的组件struts2, spring,spring mvc只不过是高手们根据经验对servlet标准接口的一个实现而已?
因为新手一开始接触就是各种框架啥的,反而容易忽略其最基本的原理。谨此提醒!
在jboss中部署可执行jar, deploy executable jar in jboss的更多相关文章
- 在JBoss中部署GeoServer
		
GeoServer一直就不能在 JBoss应用服务器中正常部署.最近我在一个国外的论坛上找到了该问题的解决方案.以下方法经测试,可以将GeoServer 2.1.3 成功部署在 JBoss 5.0 和 ...
 - 使用Maven打包可运行jar和javaagent.jar的区别
		
简介 javaagent 是 Java1.5 之后引入的新特性,其主要作用是在class被加载之前对其拦截,以插入我们的字节码. java1.5 之前使用的是JVMTI(jvm tool interf ...
 - 可执行代码(Executable Code)目标代码(object code)
		
小结: 1.可执行代码(Executable Code)是指将目标代码(object code)连接后形成的代码,简单来说是机器能够直接执行的代码. https://baike.baidu.com/i ...
 - 记录JAVAWEB部署到JBOSS中遇到的问题
		
服务器环境 jdk1.8.0_212 + jboss-eap-6.4 系统是 Service 2008 R2 数据服务器 oracle12c 系统是 Service 2008 R2 首先安装的or ...
 - myelipse中部署路径deploy location出现错误
		
背景: 因java_web项目中的所有代码以及资源文件突然无法提交,在尝试过诸多方法无果后,果断删除项目重新将down下来.启动Tomcat无问题,使用原来的访问连接报错.经检查发现加载至Tomcat ...
 - IDEA中执行MAVEN命令打jar包
		
SpringBoot Jar包打包 1.工程POM配置packaging为jar. <packaging>jar</packaging> 2.增加MAVEN运行配置 添加MAV ...
 - jboss 7部署cas3.4.11
		
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
 - maven nexus deploy方式以及相关注意事项(增加eclipse执行maven deploy)
		
以前公司都是配管负责管理jar的,现在没有专职配管了,得自己部署到deploy上供使用.总的来说,jar部署到nexus上有两种方式: 1.直接登录nexus控制台进行上传,如下: 但是,某些仓库可能 ...
 - 在jboss上部署web应用
		
1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...
 
随机推荐
- Javao中使用Jackson反序列时,将LinkedHashMap转成对象的方法(将任何Object类型转成实体)
			
可能存在这样一种情况,Jackson已经满足了大部分的序列化和反序列化工作,但是对于复杂的泛型实体估计未必能如愿的正常反序列,而此时对于一些泛型里面的实体对象就会反序列化成LinkedHashMap类 ...
 - session转载
			
sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应.tomcat生成的sessionid叫做jsessionid. ses ...
 - 非常easy的JAVA反射教程
			
原创文章,转载请注明. 反射能够动态载入类,实例化对象,调用方法.如今以下面样例解说. 一.载入类. Class clazz = Class.forName("java.lang.Strin ...
 - mysql delete auto_increment列时的注意问题
			
1. 说明 在对带有AUTO_INCREMENT列的表delete掉所有数据时: (1)对于MyISAM表,在delete表中所有数据时没有任何风险,随意折腾: (2)对于InnoDB表,在delet ...
 - c++对象模型和对象内存布局
			
简单对象模型:如下图所示: 每一个object是一系列的slots,每一个data member或者function member都有自己的一个slot.这种模型的空间和执行效率都很低.在这个模型中, ...
 - PHP中curl获取本机虚拟主机接口
			
在PHP的curl代码中增加header可解决此问题. $header = array( "Host: 你的域名(不能包含http://)", "Accept: text ...
 - android自己定义渐变进度条
			
项目中须要用到一个弧形渐变的进度条,通过android自带是不能实现的.我是没有找到实现的方法,有大神知道的能够指点.效果图是以下这种 这是通过继承VIew来绘制出来的,网上也有相似的,可是代码那是相 ...
 - caffe2--ubuntu16.04--14.04--install
			
Install Welcome to Caffe2! Get started with deep learning today by following the step by step guide ...
 - JavaScript读书笔记(4)-变量、作用域和内存问题
			
1.ECMAScript数据类型分为:基本类型值和引用类型值: ECMAScript中所有函数的参数都是按值传递的: 检查对象的类型:varible instanceof constructor Al ...
 - Android Material Design 中文版
			
http://www.google.com/design/spec/animation/authentic-motion.html http://www.oschina.net/question/14 ...